我的gridview的一部分看起来像这样:
<asp:TemplateField HeaderText="Mortality Rate" SortExpression="Other2">
<EditItemTemplate >
<asp:TextBox ID="txtAppLimit" Text='<%#Bind("Other2")%>' runat="server" width="60px" maxlength="14">
</asp:TextBox>
<asp:RangeValidator ID="RVAppLimit" Type="Currency" runat="server" ControlToValidate="txtAppLimit"
Display="Dynamic" ErrorMessage="" Font-Size="8pt"
CssClass="msgerror" MinimumValue="0" MaximumValue="200" OnPreRender="GridView1_PreRender" ValidationGroup="group1">
</asp:RangeValidator>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblAppLimit" Runat="server" Text='<%# Bind("Other2") %>' >
</asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
当我点击asp LinkButton时,我正试图以这种方式获取asp TextBox ID和asp Label ID:
var $arrL = $('#<%=GridView1.ClientID %>').find('span[id$="lblAppLimit"]');
var $lbl = $arrL[0];
($lbl).disabled = true;
alert (($lbl).disabled);
var $arrT = $('#<%=GridView1.ClientID %>').find('input:text[id$="txtAppLimit"]').val();
var $txt = $arrT[0];
alert (($txt).innerHTML);
我没有问题禁用lblAppLimit,但是我无法获取文本框ID来禁用它。我上面的代码出了什么问题?
只是添加另一个注释,当我点击浏览器上的视图源时,我能够看到lblAppLimit,但不能看到txtAppLimit。
答案 0 :(得分:1)
将txtAppLimit设为STATIC,如下所示:
1 <asp:TextBox ID="txtAppLimit" Text='<%#Bind("Other2")%>' width="60px" maxlength="14" ClientIDMode="Static" runat="server"></asp:TextBox>
并将jquery更改为:
1 $(this).find('input:text[id="txtAppLimit"]').val();
<强>更新强> 您还可以尝试将类添加到每个TextBox,如txtclass1,txtclass2
alert($(this).parent("td").parent("tr").find(".txtclass1").val());
alert($(this).parent("td").parent("tr").find(".txtclass2").val());
答案 1 :(得分:1)
txtAppLimit
位于EditItemTemplate
,因此仅在网格处于编辑模式时才有效
因此在编辑模式下尝试此脚本
var $arrT = $('#<%=GridView1.ClientID %>').find('input:text[id*="txtAppLimit"]').val();
var $txt = $arrT[0];
alert (($txt).innerHTML);
我不知道您使用$arrT[0]
的原因,但这肯定会在编辑模式下工作
$('#<%=GridView1.ClientID %>').find('input:text[id*="txtAppLimit"]').val()
希望这会对你有所帮助。