【问题标题】:asp:gridview textbox old value is post backasp:gridview 文本框旧值回发
【发布时间】:2016-09-28 07:13:29
【问题描述】:
<asp:GridView Width="300px" RowStyle-Height="20px" HeaderStyle-Height="25px" DataKeyNames="Id"  ID="bankAccounts_List" CssClass="table" runat="server" AutoGenerateColumns="false" >
<Columns>
<asp:TemplateField HeaderText="Sorting Handle" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<span class="handle"><img src="../Images/sortingHandler.jpg" height="10" /></span>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Account Number">                                              
<ItemTemplate>
<asp:TextBox ID="grd_txtbankAccountNumber" Width="150" onblur="return OnBlurGridTextbox(this);" BorderStyle="None" BackColor="White" style="text-align:left;" runat="server" Text='<%# Eval("AccountNo") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Priority" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:TextBox ID="grd_txtPriority" Width="100" BorderStyle="None" BackColor="White" runat="server" style="text-align:center"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Edit" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center" >
<ItemTemplate>
<asp:LinkButton runat="server" ID="grd_linkbutton" OnClientClick="return EditGridButton(this)">Edit</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Id" >
<HeaderStyle CssClass="hiddencol" />
<ItemStyle CssClass="hiddencol" />
<ItemTemplate>
<asp:Label ID="grd_lblId" runat="server" Text='<%# Bind("Id") %>'></asp:Label>
</ItemTemplate> 
</asp:TemplateField>
</Columns>                                       
</asp:GridView>  

<asp:Button ID="btnSaveBankInformation" runat="server" Text="<%$Resources:Strings,save%>"
            OnClick="btnSaveBankInformation_Click" />

protected void btnSaveBankInformation_Click(object sender, EventArgs e)
{
TextBox txtBankAccountNumber = bankAccounts_List.Rows[i].Cells[GetColumnIndexByName(bankAccounts_List.Rows[i], "Account Number")].FindControl("grd_txtbankAccountNumber") as TextBox;
}

无论我在任何文本框中更改什么,在保存按钮上,我总是得到旧的绑定文本框值,而不是我刚刚输入的新值。 请帮助我。是的,我没有使用 !IsPostBack 再次在 PostBack 上绑定 GridView

【问题讨论】:

  • 旁注:您不需要在单元格上使用FindControl。使用bankAccounts_List.Rows[i].FindControl("grd_txtbankAccountNumber") 就足够了,因为该行是NamingContainer
  • 什么是OnBlurGridTextbox?无论如何显示你的Page_Load,即使你声称你使用!IsPostBack,我们也希望看到它;)
  • 您是否像@TimSchmelter 先生所说的那样if (!IsPostBack) { } 这样做
  • 你为什么使用这个:'TextBox txtBankAccountNumber = ...'?你只是得到了 TextBox,但你没有设置 Text 属性,我的意思是,你只是在控制内存......

标签: c# asp.net gridview postback


【解决方案1】:
if (!IsPostBack) //Bind grid only when IsPostBack is false
{
    grd.DataSource = //data source ;
    grd.DataBind(); // bind data 
}

【讨论】:

  • "是的,我没有再次使用 !IsPostBack 将 GridView 绑定到 PostBack"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多