winform开发中gridview显示来自服务端的两种数据

从服务器端获取到查询的数据,可能是DataTable类型的,也有可能是IList<Bean>类型的


所以也就有两种给gridview赋值的方式


一.获取到的是一个datatable的数据,此时gridview列中的DataPropertyName属性跟datatable中的列名应该是一一对应的
private void setGridViewDt(GridView _gdv,DataTable _dt){
  _gdv.Rows.Clear();//先清空gridview中行的数据
  foreach(DataRow dr in _dt.Rows){
    int index=_gdv.Rows.Add(new DataGridViewRow());//datarow中每有一行,便给gridview中也添加一行,这里的index是递增的
    foreach(DataGridViewColumn col in _gdv.Columns){


      if(!string.IsNullOrEmpty(col.DataProperty)){
        _gdv.Rows[index].Cells[col.Name].Value=dr[col.DataProperty];//把datatable中对应的那行的,col.DataProperty列的数据传给gridview中的这一行的col列
      }
      //每一列的checkbox的属性还要默认为false
      _gdv.Rows[index].Cells[0].Value=false;
    }
  }




二.获取到的是一个IList<Bean>类型的数据


private void setGridViewList(GridView _gdv,IList<Bean> list){
  _gdv.Rows.Clear();
  _gdv.DataSource=new BindingList<Bean>(list);//把IList封装成BindingList,这两个有本质的区别
  for(int index=0;index<_gdv.Rows.Count;index++){
   //每一列的checkbox的属性还要默认为false
    _gdv.Rows[index].Cells[0].Value=false;
  }
}


这边实体Bean里面的各属性要跟GridView里面列的DataProperty属性要是对应的(名字相同),如果没有对应的话,gridview的那一列会为空,然后在旁边会多出bean的一个属性的列
有的时候Bean里面的属性比我们要用在gridview里面的属性多一些,如果不在gridview中添加对应的列(且要设置对应的DataProperty),那些属性就会作为gridview的列多在旁边


我们可以这样设置:
1.在gridview中添加对应的列
2.设置列的DataProperty属性跟Bean的多出来的属性名相同
3.将列的visiable属性设置为false


这样应该就可以了




服务器一般传过来的不会直接是IList<Bean>类型的数据,可能会传过来一个json类型的字符串


可以用JavaScriptSerializer 来解析,当然其也可以将对象转成json字符串

1.首先要引用库文件System.Web.Extensions

2.使用命名空间System.Web.Script.Serialization



JavaScriptSerializer _serializer=new JavaScriptSerializer();


var list=_serializer.Deserialize<IList<Bean>>(json);//支持泛型的




//将对象转化成json字符串


List<Bean> list=new List<Bean>();
Bean bean=new Bean();
bean.A="aaa"
list.Add(bean);
string jsonstring=_serializer.Serialize(list);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值