代码改变世界

DataList 编辑记录时,更新取不到值的原因。

2009-03-24 22:28  Rainbow  阅读(689)  评论(2编辑  收藏  举报

这几天项目特别的紧。本来想用新出的 asp.net mvc来做开发的。用了一天感觉还是比较难以驾驭。赶紧抽回来传统的webform开发了。可是偏偏在用DataList的时候做了页面 编辑功能的时候,死活不能更新当前记录。。看代码 aspx

<asp:DataList ID="DataList1" runat="server" DataKeyField="NoticeID"
            oneditcommand="DataList1_EditCommand"
            onupdatecommand="DataList1_UpdateCommand">
          <ItemTemplate>
          <asp:Label ID="lbl_Content" runat="server" Text='<%#Eval("Contents") %>' />
          <asp:LinkButton ID="edit" runat="server" Text="编辑" CommandName="Edit" />
          </ItemTemplate>
          <EditItemTemplate>
            <asp:TextBox ID="tb_Content" runat="server" Text='<%#Eval("Contents") %>' />
            <asp:LinkButton ID="Update" runat="server" Text="更新" CommandName="Update" />
          </EditItemTemplate>
        </asp:DataList>

cs代码:

 

    protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
        {
            DataList1.EditItemIndex = e.Item.ItemIndex;
            BindPage(); //绑定数据
        }

        protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            int id =(int) DataList1.DataKeys[e.Item.ItemIndex];
            string co = ((TextBox)e.Item.FindControl("tb_Content")).Text.Trim();
            BindPage();//绑定数据
        }

问题来了。每次通过 string co = ((TextBox)e.Item.FindControl("tb_Content")).Text.Trim(); 这个取新的值是,总是取不到。每次多是原来的值,可是我明明改了啊。。。找了一个下午。直接说答案吧。。。。。

就是一定要在

  protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindPage();
            }
        }

加上IsPostBack 这样不会每次回发的时候重新绑定了。。。。。郁闷。。。希望对大家也有帮助,我看网上好多人在人这样的问题。特地留个信号。。方便大家。