• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MingQ
博客园    首页    新随笔    联系   管理    订阅  订阅

利用枚举类型解决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)

posted @ 2012-03-07 09:16  MingQ  阅读(152)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3