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 ...
随机推荐
- C#中的DllImport使用方法
DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息 DllImport属性应用于方法,要求最少要 ...
- js自动小轮播
使用定时器,换个图片地址. 从1到5换,如果大于5了再跳到1,点击停止时关闭定时器. <!-- Author: XiaoWen Create a file: 2016-12-08 13:19:2 ...
- MySql 插入数据返回数据的Id值
insert into addeditemgroup(addeditemgroupname) value(') ; select @@IDENTITY as id; 返回最新的Id:
- API接口自动化之2 处理http请求的返回体,对返回体做校验
举例一个接口测试的常见流程 1) 发送接口请求2) 断言接口响应状态是不是200 OK3) 断言接口的响应时间低于某一个值(看情况,不是必选)4) 断言响应数据是否正确,一般的做法是判断某一个值是否相 ...
- docker 出现 Error response from daemon
第一步:通过dig @114.114.114.114 registry-1.docker.io找到可用IP navy@deepin:~/Desktop$ dig @.docker.io ; <& ...
- 《F4+2团队项目系统设计改进》
项目软件系统设计改进 1引言 1.1编写目的 本阶段完成系统的大致设计并明确系统的数据结构与软件结构.本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件概貌,把它加工成在程序细节上非常接近与源 ...
- 《A_Pancers团队》作业5—团队项目需求改进与系统设计
一:团队项目需求改进 1. <音乐播放软件需求规格说明书>的不足 在上周的<音乐播放软件需求规格说明书>我们还需要改进的地方有:1.搜索功能:2.界面的简洁美观化:3.按键的重 ...
- 《A_Pancers》第一次作业:团队亮相
一.团队及团队成员介绍 1> 队名:A_Pancers 2> 团队成员组成: 201571030310/龙正圆(小组长) 201571030329/杨环宇 20157103030 ...
- 雷林鹏分享:C# 不安全代码
C# 不安全代码 当一个代码块使用 unsafe 修饰符标记时,C# 允许在函数中使用指针变量.不安全代码或非托管代码是指使用了指针变量的代码块. 指针变量 指针 是值为另一个变量的地址的变量,即,内 ...
- Confluence 6 自动添加用户到用户组
默认组成员(Default Group Memberships) 选项在 Confluence 3.5 及后续版本和 JIRA 4.3.3 及后续版本中可用.这字段将会在你选择 'Read Only, ...