GridView.DataSource=IList .

原先一直都是在Web页面里直接从数据库里读信息到DataSet里,然后 GridView.DataSource=DataSet,而对于GridView里显示列的绑定也是根据Web页面的SQL语句的返回字段设置,比如sql语句为"select id,name from users",那么在GridView里如果要显示id和name,就需要在GridView里绑定id和name,如下所示:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">  
           <Columns>  
              <asp:BoundField DataField="id" HeaderText="序号" />  
             <asp:BoundField DataField="name" HeaderText="项目" />  
          </Columns>  
      </asp:GridView> 

今天尝试将一个IList类型的数据集绑定到GridView.DataSource,

Sql语句依然是select id,name from users,但是此次并不是直接获取,而是先将获取的id和name赋值给一个user类的两个属性userid和username,然后将user类添加到一个IList,再将IList绑定给DataSource,代码如下:

IList noticelist = GetNoticeList(ID);  
           GridView1.DataSource = noticelist;  
           GridView1.DataBind();  


 

public IList GetNoticeList(int id)  
      {  
           IList NoticeList = new ArrayList();  
           ENotice notice = null;  
           SqlParameter parm = new SqlParameter(PARAM_ID, SqlDbType.BigInt, 8);  
          parm.Value = id;  
           using (SqlDataReader sdr = SqlHelper.ExecuteReader(SqlHelper.CONN_STR, CommandType.Text, SQL_SELECT_RNOTICE, parm))  
          {  
               while (sdr.Read())  
              {  
                   notice = new ENotice(sdr.GetInt32(0), sdr.GetString(1));  
                   NoticeList.Add(notice);  
               }  
           }  
           return NoticeList;  
       }  


 

如果GridView在绑定数据时,还是如上面所示,datafield为id和name,那就会报错,说“在选定的数据源上未找到名为“id”的字段或属性。”。

解决办法,将GridView的DataField字段改为userid和username,如下所示:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">  
           <Columns>  
               <asp:BoundField DataField="userid" HeaderText="序号" />  
              <asp:BoundField DataField="username" HeaderText="项目" />  
           </Columns>  
        </asp:GridView>  


 

也就是GridView要根据IList里的字段来绑定,而从GetNoticeList函数里可以看到IList里是以notice类为单位添加的,因此GridView的DataField字段要根据sql字段绑定到的notice类里的属性字段来定。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值