利用枚举类型解决DataGrid ItemDataBound Index变化问题
在使用DataGrid控件的时候我们常常会在 ItemDataBound时候去做一些处理,可是当调整DataGrid的栏位顺序或
在中间插入新栏位后,我们必须要重新调整Cells Index(如下红色代码标识的),这是一件很麻烦的事情。
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Cells[1].Text ="Test 01";
((HtmlInputControl)e.Item.Cells[2].FindControl("tbRemark")).Value = "Test 02";
}
}
其实可以利用C#枚举类来解决这个问题,简单而且直观。
后台代码(Test.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.OleDb;
using System.Data;
using System.Web.UI.HtmlControls;
public partial class Test : System.Web.UI.Page
{
// 定义栏位名称和顺序
public enum dgColumnName
{
EntityId,
Template1,
EntityCode
}
protected void Page_Load(object sender, EventArgs e)
{
// 绑定资料到DataGrid
DBClass2 db2 = new DBClass2(true,false);
string vSQL = "select entity_code,entity_id from rerp.msiweb_organization_tbl ";
DataTable dt = new DataTable();
dt = db2.ReturnDataSet(vSQL).Tables[0];
DataGrid1.DataSource = dt;
DataGrid1.DataBind();
}
protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Cells[(int)dgColumnName.EntityId].Text = e.Item.Cells[(int)dgColumnName.EntityId].Text
+ "-" + e.Item.Cells[(int)dgColumnName.EntityCode].Text;
((HtmlInputControl)e.Item.Cells[(int)dgColumnName.Template1].FindControl("tbRemark")).Value = "Rep.Office";
}
}
}
UI(Test.aspx)

浙公网安备 33010602011771号