我的GridView中有多个文本框和下拉列表。对于一个特定的文本框,我需要触发一个服务器事件,该事件从数据库中获取数据并将其填充到Grid的其他列中。有没有一种简单的方法可以做到这一点,或者像详细的here
那样稍微复杂一些我在实现上述方法或考虑解决方法时没有问题,但后来认为在网格控件中有Cell Lost Focus会让我感到惊讶。我错过了什么吗?对此的任何帮助都会受到赞赏。
答案 0 :(得分:1)
您可以将AutoPostBack
设置为true并处理TextChanged
事件。
<asp:GridView ID="GridView1" runat="server" EmptyDataText="It's Empty.">
<Columns>
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<asp:TextBox ID="txtName"
runat="server"
Text='<%#Eval("Name") %>'
AutoPostBack="true"
OnTextChanged="NameChanged" >
</asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</GridView>
代码隐藏中的:
protected void NameChanged(Object sender, EventArgs e)
{
var txtName = (TextBox) sender;
var row = (GridViewRow) txtName.NamingContainer;
// you could find other controls in this GridViewRow via
// row.FindControl("ControlID") in case of a TemplateField or
// row.Cells[0].Text (0 = index of column) in case of a BoundField
}