0

GridView 内に複数のテキスト ボックスとドロップダウン リストがあります。ある特定のテキスト ボックスについて、データベースからデータを取得し、それをグリッドの他の列に入力するサーバー イベントをトリガーする必要があります。ここで詳述されているように、それを行う簡単な方法または少し複雑な方法はありますか

上記の方法を実装したり、回避策を考えたりするのに問題はありませんが、グリッド コントロールに Cell Lost Focus があると考えて、少し驚きました。何か不足していますか?これについての助けをいただければ幸いです。

4

1 に答える 1

1

AutoPostBacktrue に設定して、その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 に答える