DevExpress Add ASPxGridView template columns at runtime
来源:互联网 发布:郑州java培训哪家好 编辑:程序博客网 时间:2024/06/06 23:18
<%@ 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基本用法
- DevExpress学习之ASPxGridView
- DevExpress ASPxGridView基本用法
- DevExpress ASPxGridView 使用方法概述
- ASPxGridview使用总结(DEVExpress)
- ASPxGridview使用总结(DEVExpress)
- ASPxGridview使用总结(DEVExpress)
- DevExpress ASPxGridView基本用法
- DevExpress.Web.ASPxGridView
- DevExpress ASPxGridView 使用文档五
- Devexpress ASPxGridView事件调用顺序
- Devexpress ASPxGridView 绑定模板列
- How can I add properties to an object at runtime?
- hive--add columns问题
- DevExpress 的 ASPxGridView 控件显示主从表
- DevExpress学习之ASPxGridView后台增加列
- DevExpress ASPxGridView 使用文档一:概述
- 线性回归
- Android开发开源源代码
- (C++设计模式) ------Bridge模式-- 结构型模式
- .NET框架设计—常被忽视的C#设计技巧
- 2.2线性表的顺序表示和实现
- DevExpress Add ASPxGridView template columns at runtime
- jQuery选择器之基本选择器
- oracle之data guard(1)—物理standby和primary切换
- Java中的堆内存与栈内存分配浅析
- IOS ARC和GCD结合的单例模式
- Oracle创建用户,创建表空间,将空间分配给用户,给用户授权
- POJ 2528 Mayor's posters
- Linux命令学习手册-readelf命令
- tolua总结2