在一個ASP.Net應用程序中我有一個aspx文件,裏面有一個更新面板,裏面有一個Gridview。在Gridview裏面有一張桌子,裏面還有一些面板。這些面板內有一些控件。在一個GridView中使用JQuery無法找到動態asp:控件
ASPX
<asp:Gridview ID="GridView1" runat = "server"...>
<Columns>
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<table>
<asp:Panel ID="pnlVisualAst" runat="server" Visible="false">
<tr>
<td style="text-indent: 50px; width: 25%">
<asp:Label ID="lblVisAst" runat="server" Text="Visual Assitance"></asp:Label>
</td>
<td colspan="3">
<asp:Button ID="btnVisAst" class="button" runat="server" Text="View"/>
<asp:Image ID="popImg" ImageUrl='<%# GetImage(Eval("VA_Img"))%>' runat="server" Visible="false" />
</td>
</tr>
</asp:Panel>
</table>
</ItemTemplate>
</asp:TemplateField >
</Columns>
</asp:Gridview>
現在,我寫一個jQuery函數來捕獲爲GridView裏面的按鈕的Click事件,並顯示在彈出窗口的像場。
JQuery的
<script type="text/javascript">
$(document).on('ready', function()
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function()
{
$('#<%=GridView1.ClientID%>').find($('#<%= btnVisAst.ClientID %>')).click(function()
{
$('#<%=popImg.ClientID%>').dialog
({
title: "my jquery popup",
width: 430,
height: 200,
modal: true,
button:
{
Close:
function()
{
$(this).dialog('Close');
}
}
});
$(this).prop('checked', true);
});
});
});
與上述代碼的問題是它不能找到的GridView內的動態控制。它顯示'btnVisAst'和'popImg'在當前上下文中不存在。
有什麼辦法可以解決這個問題嗎? 謝謝。
它總是複雜的,在項目的GridView控件ID工作。由於每個項目中都有一個'btnVisAst',並且由於每個ID在HTML輸出中必須是唯一的,因此ASP.NET會添加一些前綴以使每個ID都不同。爲了消除這個問題,您可以在ItemTemplate中設置控件的'CssClass',並在jQuery選擇器中使用該類名稱而不是ID。 – ConnorsFan
我已經試過了。如果我使用CSS類而不是ID,它會生成所有按鈕的事件,同時沒有規範。我不希望這種情況發生,爲什麼我採取這種方法。 –
然後,使用ID,您使用jQuery選擇器定位哪個項目? – ConnorsFan