Asp.net中在GridView数据绑定事件中改变显示内容要注意的问题

今天No.5说他的用Template实现的GridView在数据绑定事件中改变显示的内容后,再刷新页面时,改变的值就没了。

前台画面的片断:

  1. <ItemTemplate>
  2.     <asp:Label ID="Label1" runat="server" Text='<%# Bind("PAYMENT_CD") %>'></asp:Label>
  3. </ItemTemplate>

数据绑定事件:

  1. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  2. {
  3.     if (e.Row.RowType == DataControlRowType.DataRow)
  4.     {
  5.         e.Row.Cells[0].Text = "哈哈哈";
  6.     }
  7. }

生成的html代码为:

  1. <td>哈哈哈</td>

稍微修改了一下之后,再刷新就不会丢值了,如下:

  1. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  2. {
  3.     if (e.Row.RowType == DataControlRowType.DataRow)
  4.     {
  5.         Label lb1 = e.Row.FindControl("Label1"as Label;
  6.         lb1.Text = "哈哈哈";
  7.     }
  8. }

生成的html代码为:

  1. <td><span id="GridView1_ctl02_Label1">哈哈哈</span></td>

如果把前台代码修改一下就会和以前一样变得不好用了:

  1. <ItemTemplate>
  2.     <asp:Label ID="Label1" runat="server" Text='<%# Bind("PAYMENT_CD") %' EnableViewState="False"></asp:Label>
  3. </ItemTemplate>

总结:
可见,Label中的值之所以在页面刷新时还能保持,是因为ViewState的功能,如果单纯设置e.Row.Cells[0].Text的值,仅仅只是设置在<TD>中,而只有设置在Label上,才能保持在ViewState中,当然要让Label的EnableViewState属性为True才可以。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值