DevExpress Add ASPxGridView template columns at runtime
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="GridPlan.aspx.cs" Inherits="PlanTest.Layouts.PlanTest.GridPlan"
DynamicMasterPageFile="~masterurl/default.master" %> <%@ Register Assembly="DevExpress.Web.v11.1, Version=11.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxHiddenField" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.v11.1, Version=11.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxCallback" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxEditors.v11.1, Version=11.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxEditors" TagPrefix="dx" %>
<%@ Register Assembly="DevExpress.Web.ASPxGridView.v11.1, Version=11.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a"
Namespace="DevExpress.Web.ASPxGridView" TagPrefix="dx" %>
<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
<script type="text/javascript" language="javascript">
function GetSaveData() {
var rowCount = gdv.GetVisibleRowsOnPage();
var valueStr = '';
var colNameStr = hdl.Get("colNames");
for (var i = 0; i < rowCount; i++) {
var colNames = new Array();
colNames = colNameStr.split(',');
var id = gdv.GetRowKey(i);
for (var j = 0; j < colNames.length; j++) {
var txtClientName = 'txt' + id + colNames[j];
var txtEditor = ASPxClientControl.GetControlCollection().GetByName(txtClientName);
valueStr = valueStr + txtEditor.GetText() + '&' + txtEditor.cpID + '|';
}
}
return valueStr;
}
</script>
</asp:Content>
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<dx:ASPxCallback ID="clb" runat="server" ClientInstanceName="clb" OnCallback="clb_OnCallback">
<ClientSideEvents CallbackComplete="function(s, e){
if(e.result=='0')
{
//error
alert('失败,联系管理员');
}
else
{
//yes
alert('成功');
gdv.Refresh();
}
}" />
</dx:ASPxCallback>
<dx:ASPxHiddenField ID="hdl" runat="server" ClientInstanceName="hdl">
</dx:ASPxHiddenField>
<dx:ASPxGridView ID="gdv" ClientInstanceName="gdv" runat="server" OnLoad="gdv_OnLoad"
KeyFieldName="ID">
<Columns>
<dx:GridViewDataColumn FieldName="Name" Caption="Name">
</dx:GridViewDataColumn>
<dx:GridViewDataColumn FieldName="Count" Caption="Count">
</dx:GridViewDataColumn>
</Columns>
</dx:ASPxGridView>
<dx:ASPxButton ID="btnTest" runat="server" Text="保存">
<ClientSideEvents Click="function(s, e){
clb.PerformCallback(GetSaveData());
e.processOnServer = false;
}" />
</dx:ASPxButton>
</asp:Content>
<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
应用程序页
</asp:Content>
<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea"
runat="server">
我的应用程序页
</asp:Content>
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Web.UI;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxGridView;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using DevExpress.Web.ASPxCallback; namespace PlanTest.Layouts.PlanTest
{
public partial class GridPlan : LayoutsPageBase
{
TestEntities ent = new TestEntities();
protected void Page_Load(object sender, EventArgs e)
{
} protected void gdv_OnLoad(object sender, EventArgs e)
{
int weekCount = 5;
string startDate = "2013/7/26";
string[] weeks = GetDatequantumList(weekCount, startDate);
gdv.DataSource = GetDataTable(weeks);
if (!IsPostBack && !IsCallback)
{
PopulateColumns(weeks);
gdv.DataBind();
}
else
{
CreateTemplate(weeks);
}
} private object GetDataTable(string[] weeks)
{
string colNames = string.Empty;// "ID,";
DataTable table = ent.InfoList.ToDataTable();
for (int i = 0; i < weeks.Length; i++)
{
table.Columns.Add(weeks[i], typeof(string));
colNames += weeks[i] + ",";
}
colNames = colNames.TrimEnd(',');
hdl.Set("colNames", colNames);
foreach (DataRow row in table.Rows)
{
int id = Convert.ToInt32(row["ID"]);
List<Plan> plans = ent.Plan.Where(p => p.InfoList.ID == id).ToList();
for (int j = 0; j < weeks.Length; j++)
{
//字段的值保存id和value的对应关系
row[weeks[j]] = plans[j].Count + "|" + plans[j].ID;
}
}
return table;
} public void PopulateColumns(string[] weeks)
{
GridViewBandColumn bandColumn = new GridViewBandColumn();
bandColumn.Caption = "测试";
for (int i = 0; i < weeks.Length; i++)
{
GridViewDataTextColumn colItemTemplate = new GridViewDataTextColumn();
colItemTemplate.DataItemTemplate = new MyTextTemplate(); // Create a template
colItemTemplate.FieldName = weeks[i];
colItemTemplate.Caption = weeks[i];
bandColumn.Columns.Add(colItemTemplate);
}
gdv.Columns.Add(bandColumn);
} private void CreateTemplate(string[] weeks)
{
for (int i = 0; i < weeks.Length; i++)
{
((GridViewDataColumn)gdv.Columns[weeks[i]]).DataItemTemplate = new MyTextTemplate();
}
} protected void clb_OnCallback(object source, CallbackEventArgs e)
{
try
{
string[] newValues = e.Parameter.TrimEnd('|').Split('|');
foreach (string newValue in newValues)
{
int workload = Convert.ToInt32(newValue.Substring(0, newValue.IndexOf('&')));
int planID = Convert.ToInt32(newValue.Substring(newValue.IndexOf('&') + 1));
Plan plan = ent.Plan.Where(p => p.ID == planID).FirstOrDefault();
if (plan != null)
{
plan.Count = workload;
}
}
ent.SaveChanges();
e.Result = "1";
}
catch
{
e.Result = "0";
}
}
} class MyTextTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
using (GridViewDataItemTemplateContainer gridContainer = (GridViewDataItemTemplateContainer)container)
{
string fieldValue = gridContainer.Grid.GetRowValuesByKeyValue(gridContainer.KeyValue, gridContainer.Column.FieldName).ToString();
ASPxTextBox txt = new ASPxTextBox();
txt.Width = 46;
txt.Text = fieldValue.Substring(0, fieldValue.IndexOf("|"));
txt.JSProperties["cpID"] = fieldValue.Substring(fieldValue.IndexOf("|") + 1);
txt.ClientInstanceName = "txt" + gridContainer.KeyValue.ToString() + gridContainer.Column.FieldName;
txt.DisplayFormatString = "F2";
container.Controls.Add(txt);
}
}
}
}
Above is almost full code what I did for test. It mainly used in the situation of making plans, which user can complete the plan of multiple work at one time.
All rights reserved
DevExpress Add ASPxGridView template columns at runtime的更多相关文章
- devexpress中ASPxGridView控件初始化赋值
写在ASPxGridView中OnCellEditorInitialize="ASPxGridView_progoods_CellEditorInitialize" 事件中: / ...
- DevExpress之ASPxGridView笔记(1)
1.设置Row(某列)输出格式,例如,在数字前加美元符.每3位以逗号隔开及设置小数点后两位: <dx:GridViewDataTextColumn FieldName="SHOUHUI ...
- Devexpress 使用经验 —— ASPxGridView命令行自定义按钮灵活使用
ASPX <dx:ASPxGridView ID="ASPxGridView1" runat="server" DataSourceID="Ob ...
- Devexpress 使用经验 —— ASPxGridView前后台交互写法推荐
这里的格式是仁者见仁智者见智,这篇随笔只是我在工作过程中总结出的阅读性高,对我来说效率较高的写法. ASPX: <dx:ASPxGridView ID="ASPxGridViewLin ...
- DB2 Add hidden Identity columns
An identity column contains a unique numeric value for each row in the table. DB2® can automatically ...
- [MODx] 1. Add Html5 template into the MODx
1. Connet MODx by SSH: Go to the MODx cloud; Find you current user and right click selet Edit Cloud; ...
- add some template for ec-final
二维rmq 离线 init O( n*n*logn*logn ) query O(1) http://www.cnblogs.com/kuangbin/p/3227420.html 求1-n有多少个 ...
- DevExpress的 ASPxGridview控件的自动配置效果
[淘宝小店:http://shop107919332.taobao.com ] 软件运行界面.是不是很漂亮? 这里是系统配置页面,可以随时根据需要配置每张表的每个字段的显示顺序,可见与否,只读与否,编 ...
- DevExpress控件使用系列--ASPxGridView+Popup+Tab
1.控件功能 列表控件展示数据.弹框控件执行编辑操作.Tab控件实现多标签编辑操官方说明 2.官方示例 2.1 ASPxGridView http ...
随机推荐
- Ubuntu 上 执行命令 java -version 显示 没有那个文件或目录
解决方法 执行 which java 发现默认java目录:/usr/bin/java . 查看 JAVA_HOME 路径:$JAVA_HOME,得到 /usr/local/java/jdk1.7.0 ...
- POJ 2965 The Pilots Brothers' refrigerator (枚举+BFS+位压缩运算)
http://poj.org/problem?id=2965 题意: 一个4*4的矩形,有'+'和'-'两种符号,每次可以转换一个坐标的符号,同时该列和该行上的其他符号也要随之改变.最少需要几次才能全 ...
- shell 清空指定大小的日志文件
#!/bin/bash # 当/var/log/syslog大于68B时 if ! [ -f /var/log/syslog ] then echo "file not exist!&quo ...
- ubuntu server 16.04(amd 64) 配置网桥,多网卡使用激活
安装了Ubuntu16.04的server版本,结果进入系统输入ifconfig后发现,只有一个网卡enp1s0,还有一个网络回路lo,ifconfig -a 发现其实一共有四个网卡,enp1s0,e ...
- 【转】VC6在Win7下打开文件崩溃问题
http://www.cnblogs.com/Leon5/archive/2011/08/24/2152670.html 1.微软针对这个问题发布了一个补丁包.下载地址 2.下载之后是一个源码包,解压 ...
- NIO 之 ByteBuffer
前言 对于刚接触ByteBuffer人来说,想要完全理解会稍微有点困难,正巧前几天有人问我,想到好久没写文章,就整理一下. 概念理解 对于ByteBuffer的一些概念不理解的情况下,如果直接打开源码 ...
- cocos2dx 3.13 simulator的问题
下载新的cocos2dx 3.13,想使用simulator来运行lua项目,结果发现使用vs2013编译不通过. 1. 9>main.cpp(5): error C2146: 语法错误: 缺少 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)C 六子冲
https://www.nowcoder.com/acm/contest/67/C 思路: 模拟. 代码: #include<bits/stdc++.h> using namespace ...
- Codeforces 821C - Okabe and Boxes
821C - Okabe and Boxes 思路:模拟.因为只需要比较栈顶和当前要删除的值就可以了,所以如果栈顶和当前要删除的值不同时,栈就可以清空了(因为下一次的栈顶不可能出现在前面那些值中). ...
- Vue.js Cookbook: 添加实例属性; 👍 axios(4万➕✨)访问API; filters过滤器;
add instance properties //加上$,防止和已经定义的data,method, computed的名字重复,导致被覆写.//可以自定义添加其他符号. Vue.prototype. ...