0

我的 GridView 中有多个文本框和下拉列表。对于一个特定的文本框,我需要触发一个服务器事件,该事件从数据库中获取数据并将其填充到网格的其他列中。有没有一种简单的方法或稍微复杂的方法,如这里详述

我在实施上述方法或考虑解决方法时没有问题,但后来认为网格控件中有 Cell Lost Focus 让我有点吃惊。我错过了什么吗?对此的任何帮助将不胜感激。

4

1 回答 1

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
}
于 2012-11-14T20:36:11.303 回答