我的 GridView 中有多个文本框和下拉列表。对于一个特定的文本框,我需要触发一个服务器事件,该事件从数据库中获取数据并将其填充到网格的其他列中。有没有一种简单的方法或稍微复杂的方法,如这里详述
我在实施上述方法或考虑解决方法时没有问题,但后来认为网格控件中有 Cell Lost Focus 让我有点吃惊。我错过了什么吗?对此的任何帮助将不胜感激。
您可以设置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
}