我有一个网格视图。每行都有一个备用名称(TextBox)和一个隐藏按钮,JQuery 必须自动在文本框“onblur”上单击此按钮。
<asp:GridView ID="GridView1" CssClass="GridView1" runat="server" AutoGenerateColumns="False" EnableViewState="True">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="checkbox1" runat="server" OnClick="checkboxing(this)" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="City Name Id">
<ItemTemplate>
<asp:Label ID="NameId" runat="server" Text='<%# Eval("Name_Id") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Alternate Names">
<ItemTemplate>
<asp:TextBox runat="server" ClientIDMode="Static" ID="altTxtNames" Style="display: none" onblur="buttonupdate(this)"></asp:TextBox>
<asp:Button runat="server" ID="TxtButton" ClientIDMode="Static" Style="visibility: hidden; display: none" OnClick="TxtButton_Click" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
每当备用名称(文本框)中发生“onblur”事件时
onblur="buttonupdate(this)"
执行以下 JQuery:
function buttonupdate(alternateTxtNames) {
$('#TxtButton').click();
}
此按钮单击提示执行 aspx.cs 方法,其中使用以下代码从单击的按钮网格视图行中选择已编辑的“备用名称”和“城市名称 Id”的值:
protected void TxtButton_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
GridViewRow gvr = (GridViewRow)btn.NamingContainer;
string updatedSNo = (gvr.FindControl("NameId") as Label).Text;
int SNo = Convert.ToInt32(updatedSNo);
string updatedText = (gvr.FindControl("altTxtNames") as TextBox).Text;
}
但是每次点击来自另一行时,只选择第一个 gridview 行值,我认为这是使用ClientIDMode的因果关系,因为它无法区分按钮点击与其他行。
我应该如何克服这个问题。哪位好心人可以指导一下。
相关分类