日期:2014-05-17  浏览次数:20901 次

在gridview里使用了textbox控件,但是值修改不了,为什么呢
我绑定数据的时候使用了textbox控件。现在的操作是批量修改textbox中的值,然后提交。可是提交后得到的textbox的值,仍然是修改之前的值,请问是为什么呢?

前台的代码是这样的
<asp:gridview runat="server" AutoGenerateColumns="False" Width="100%"  ID = "gridview1" 
            runat="server">
    <Columns>
        <asp:TemplateField HeaderText="题号">
        <ItemTemplate>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="序号" HeaderText="序号" SortExpression="序号" />
    </Columns>
        </asp:gridview>


数据绑定的时候使用了
 gridview1.DataSource = ds;
            gridview1.DataBind();
            TextBox tb;

            for (int i = 0; i <= gridview1.Rows.Count - 1; i++)
            {
               
                    tb = (TextBox)gridview1.Rows[i].FindControl("TextBox1");
                    tb.Text = ds.Tables[0].Rows[i][0].ToString();
             }


这样可以得到结果
提交按钮的后台代码是这样的
TextBox tb;
        string nos = ""; //题目题号
        string Question_id = "";//题目序号
        for (int i = 0; i < gridview1.Rows.Count; i++)
        {
            tb = (TextBox)gridview1.Rows[i].FindControl("TextBox1");
            nos = tb.Text.ToString();
            Question_id = gridview1.Rows[i].Cells[1].Text.ToString();

            Response.Write("<script>alert('"+nos.ToString()+","+Question_id+"')</script>");
        }


现在把textbox的值修改了,然后点击提交,可是得到的值还是修改前的,请问是怎么呢?

------解决方案--------------------
还有一个原因,注释是否在page_load中,每次都是直接重新绑定数据源,擅用Page.IsPostBack
------解决方案--------------------
page_load

if(!ispostback)
------解决方案--------------------
引用: