ASPxGridView的数据绑定显示

近日跟着做了一个项目,用到了很多次ASPxGridView,以下是对绑定数据及对数据处理的总结。
绑定方法一下几种:首先拖入ASPxGridView控件(控件ID为ASPxGridView1)
添加Columns, 设置FieldName 
A,B,C
1.这种方法适合简单的ASPxGridView的显示
       先创建个DataTable dt=new DataTable();

       dt中是从数据库中查询到的数据例如select A,B,C from tablename
        ASPxGridView1.DataSource = dt;
        ASPxGridView1.DataBind();
        ASPxGridView1.KeyFieldName = "keyfield";//设置KeyFieldName之后才能对其做相关的操作。

这样查询到的dt和ASPxGridView1中的Columns中的列是对应的,直接绑定就行,SQL语句中的列名要和添加Columns时候设置的FieldName相同才能绑定的上去。

但是有时候直接获取符合ASPxGridView中的列的SQL语句较有难度就推荐下方的方法2。


2.这样的适合比较复杂的GridView

创建两个DataTable dt1=new DataTable(); DataTable dt2=new DataTable();

ASPxGridView1 中的列来自不同的表 例如其中有5列 A,B,C,D,E,A,B,C列来自表table1,列D,E来自表table2

(table1 中列为ABC  table2中表为ADE,其中table1.A与table2.A相关)

dt1中存从数据库table1中查询到的信息。得到dt1中包含(ABC)

dt2创建为和ASPxGridView所要求的列一样的DataTable,即列为A,B,C,D,E的DataTable

创建方法如下

typeof(类型)可以选择为需要的类型
        dt2.Columns.Add("A", typeof(String));
        dt2.Columns.Add("B", typeof(String));
        dt2.Columns.Add("C", typeof(String));
        dt2.Columns.Add("D", typeof(String));
        dt2.Columns.Add("E", typeof(String));

然后循环dt1将dt1中的数据添加到dt2中

for (int I=0;i<dt1.Rows.Count;i++)

{

            DataRow dr = dt2.NewRow();
            dr["A"] = dt1.Rows[i]["A"];

            dr["B"]=dt1.Rows[i]["B"];

            dr["C"]=dt1.Rows[i]["C"];
            dt2.Rows.Add(dr);

}

然后执行SQL语句将dt1中存入从数据库table2中的数据得到dt中包含(ADE),循环dt1将其新信息添加到dt2中

for (int I=0;i<dt1.Rows.Count;i++)

{

            for (int j=0;j<dt2.Rows.Count;j++)

             {

               if (dt2.Rows[j]["A"]==dt1.Rows[i][A])

                  {

                     dt2.Rows[j]["D"]=dt1.Rows[i]["D"];

                     dt2.Rows[j]["E"]=dt1.Rows[i]["E"];

                     break;

                  }

             }

}

利用如此方法得到处理后的dt2,将dt2绑定到ASPxGridView上面。除此之外,如果要对ASPxGridView做一些特殊处理,比如数据库中存储的是某些编码,在ASPxGridView中想要显示这些编码对应的文字也可以用该方法。

例如:

table1 字段 name type sex  张三 1 1

其中type=1想要显示为“学生”sex=1想要显示为“男”

用select * from table1得到的dt中数据是这样的

dt.Rows[0]["name"]="张三";

dt.Rows[0]["type"]="1";

dt.Rows[0]["sex"]="1";

直接绑定到ASPxGridView上的话显示的是   张三 1 1,但是想显示为 张三 学生 男  的话就可以对dt做些处理。

处理如下

for (int i=0;i<dt.Rows.Count;i++)

{

if (dt.Rows[i]["type"]=="1")

{dt.Rows[i]["type"]="学生")

}

if (dt.Rows[i]["sex"]=="1")

{dt.Rows[i]["sex"]="男")

}

}

这样处理过后的dt再绑定到ASPxGridView上就行了。总之是查询到数据之后可以对数据进行一些操作,如果一个DataTable不够用的话,可以申请多个进行处理,将DataTable处理为自己想要的样式再绑定。

除此之外还可以在绑定之后进行显示的时候进行更改,在ASPxGridView的操作中有个HtmlRowCreted,在这个事件中添加

protected void ASPxGridView1_HtmlRowCreated(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableRowEventArgs e)
   {
      // int i = e.VisibleIndex;
       String type;
       LiteralControl a_cell = new LiteralControl();
       a_cell=(LiteralControl)e.Row.Cells[2].Controls[0];
       type = a_cell.Text.ToString();
       switch (type)
       {
           case "1":
               a_cell.Text = "类型1";
               break;
           case "2":
               a_cell.Text = "类型2";
               break;
           case "3":
               a_cell.Text = "类型3";
               break;
           case "4":
               a_cell.Text = "类型4";
               break;
           case "5":
               a_cell.Text = "类型5";
               break;
           case "6":
               a_cell.Text = "类型6";
               break;
       }
   }

这样本来绑定的数据源中type这一项存储为1,2,3,4,5,6在这里进行了处理就会变成类型1,类型2,类型3,类型4,类型5,类型6


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值