如何调用文本框代码隐藏文本更改事件从复选框单击位于网格视图行内
本文关键字:文本 于网格 单击 复选框 网格 视图 调用 何调用 代码 隐藏 事件 | 更新日期: 2023-09-27 18:35:47
我有一个网格视图,其中每一行都有一个复选框和文本框。我正在做一些关于文本更改事件的工作,如下所示
protected void txtRemarks_TextChanged(object sender, EventArgs e)
{
GridViewRow grow = ((TextBox)sender).Parent.Parent as GridViewRow;
GenerateCheckedDataAndStore(grow); // Basically populates a datatable from Viewstate
}
这也需要在复选框的点击事件上做。我尝试使用__doPostBack()
功能但不起作用。
如何通过单击相邻的复选框成功触发文本框更改事件背后的代码?请帮忙。
<asp:GridView id="grdView" runat="server">
<Columns>
<asp:TemplateField ItemStyle-Width="2%">
<HeaderTemplate>
<asp:CheckBox runat="server" ID="chkAll" Style="text-align: left !important;" />
</HeaderTemplate>
<ItemTemplate>
<%-- <asp:CheckBox runat="server" ID="chkSelect" AutoPostBack="true" OnCheckedChanged="chkSelect_CheckedChanged" />--%>
<asp:CheckBox runat="server" ID="chkSelect" />
<asp:HiddenField ID="hdnNo" runat="server" Value="<%#Bind('InvoiceNo')%>" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Remarks" ItemStyle-Width="12%">
<ItemTemplate>
<asp:TextBox ID="txtRemarks" runat="server" OnTextChanged="txtRemarks_TextChanged" Text="<%#Bind('Remarks')%>" TextMode="MultiLine" AutoPostBack="true" ></asp:TextBox>
<asp:HiddenField ID="hdnRemarks" runat="server" />
</ItemTemplate>
</asp:TemplateField>
.
.
.
</Columns>
</GridView>
请注意我的目标是在复选框单击事件上调用GenerateCheckedDataAndStore(grow);
。
编辑
正如@Jared在下面的评论中所建议的那样,我正在从复选框的复选框中调用文本更改。但奇怪的是,从 checkbpox 捕获的网格视图行并没有消失,而是与首先选择的行相同。
protected void txtRemarks_TextChanged(object sender, EventArgs e)
{
GridViewRow grow= null;
if(sender is TextBox)
grow = ((TextBox)sender).Parent.Parent as GridViewRow;
else if(sender is CheckBox)
grow = ((CheckBox)sender).Parent.Parent as GridViewRow;
GenerateCheckedDataAndStore(grow);
}
只需添加到复选框中即可使用以下代码:
AutoPostBack="true" OnCheckedChanged="txtRemarks_TextChanged"
更新:
您需要将发件人强制转换为控件而不是文本框才能使操作正常工作。