<%@ 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的更多相关文章

  1. devexpress中ASPxGridView控件初始化赋值

    写在ASPxGridView中OnCellEditorInitialize="ASPxGridView_progoods_CellEditorInitialize"  事件中: / ...

  2. DevExpress之ASPxGridView笔记(1)

    1.设置Row(某列)输出格式,例如,在数字前加美元符.每3位以逗号隔开及设置小数点后两位: <dx:GridViewDataTextColumn FieldName="SHOUHUI ...

  3. Devexpress 使用经验 —— ASPxGridView命令行自定义按钮灵活使用

    ASPX <dx:ASPxGridView ID="ASPxGridView1" runat="server" DataSourceID="Ob ...

  4. Devexpress 使用经验 —— ASPxGridView前后台交互写法推荐

    这里的格式是仁者见仁智者见智,这篇随笔只是我在工作过程中总结出的阅读性高,对我来说效率较高的写法. ASPX: <dx:ASPxGridView ID="ASPxGridViewLin ...

  5. DB2 Add hidden Identity columns

    An identity column contains a unique numeric value for each row in the table. DB2® can automatically ...

  6. [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; ...

  7. 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有多少个 ...

  8. DevExpress的 ASPxGridview控件的自动配置效果

    [淘宝小店:http://shop107919332.taobao.com ] 软件运行界面.是不是很漂亮? 这里是系统配置页面,可以随时根据需要配置每张表的每个字段的显示顺序,可见与否,只读与否,编 ...

  9. DevExpress控件使用系列--ASPxGridView+Popup+Tab

      1.控件功能     列表控件展示数据.弹框控件执行编辑操作.Tab控件实现多标签编辑操官方说明 2.官方示例       2.1 ASPxGridView                http ...

随机推荐

  1. Linux 安装 mysql 转 http://www.cnblogs.com/fnlingnzb-learner/p/5830622.html

    到mysql官网下载mysql编译好的二进制安装包,在下载页面Select Platform:选项选择linux-generic,然后把页面拉到底部,64位系统下载Linux - Generic (g ...

  2. [Shiro] - shiro之SSM中的使用

    在学习shiro的途中,在github发现了一个开源项目,所需的控件刚好是自己要学习的方向. 虽然还要学习完ssm的shiro与springboot的shiro,以及接下来的种种控件和类库,但学习这个 ...

  3. ActiveMQ 负载均衡与高可用(转载)

    一.架构和技术介绍 1.简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现 2.activemq的 ...

  4. UVa 10003 切木棍(区间DP+最优矩阵链乘)

    https://vjudge.net/problem/UVA-10003 题意: 有一根长度为L的棍子,还有n个切割点的位置.你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小.每 ...

  5. PYTHON HTML.PARSER库学习小结--转载

    前段时间,一朋友让我做个小脚本,抓一下某C2C商城上竞争对手的销售/价格数据,好让他可以实时调整自己的营销策略.自己之前也有过写爬虫抓某宝数据的经历,实现的问题不大,于是就答应了.初步想法是利用pyh ...

  6. 浅谈PHP5中垃圾回收算法

    原文链接:http://www.cnblogs.com/leoo2sk/archive/2011/02/27/php-gc.html PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源 ...

  7. html 获取鼠标左键事件,滚轮点击事件,右键点击事件

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. linux上python安装相关

    [CentOS上安装python2.7和ipython]1,安装依赖库yum install readline-devel 2,按装python2.7和ipython //使用ipython需要先安装 ...

  9. C#读写记事本(txt)文件

    C#写入记事本(txt)文件方法一: FileStream stream = new FileStream(@"d:\aa.txt",FileMode.Create);//file ...

  10. js插件---在线类似excel生成图表插件解决方案

    js插件---在线类似excel生成图表插件解决方案 一.总结 一句话总结:google比百度好用多了,多用google google js editable table jquery 双向绑定 这种 ...