我有一个Gridview,其中每一行都有一个Checkbox和TextBox。我在textchange事件上做了一些工作,如下所示
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在下面的评论中所建议的那样,我从checkchanged的复选框调用textchange。但奇怪的是,从checkbpox捕获的gridview行不会更新,但与首先选择的行保持一致。
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);
}
答案 0 :(得分:0)
只需添加以下代码旁边的复选框:
AutoPostBack="true" OnCheckedChanged="txtRemarks_TextChanged"
更新
您需要将发件人转发给Control而不是TextBox才能使您的行动正常运作。