Javascript asp.net gridview中的面板-如何在jquery中找到它?
我在gridview里有一个面板。 当我在网格视图中单击单选按钮时,我调用jquery click事件 点击单选按钮。这部分工作正常…现在我需要引用gridview中的面板,但我不能使用$this,因为它引用了我的radiobuttonlist,我想它是这样的 我怎样才能获得此面板的参考Javascript asp.net gridview中的面板-如何在jquery中找到它?,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我在gridview里有一个面板。 当我在网格视图中单击单选按钮时,我调用jquery click事件 点击单选按钮。这部分工作正常…现在我需要引用gridview中的面板,但我不能使用$this,因为它引用了我的radiobuttonlist,我想它是这样的 我怎样才能获得此面板的参考 $("#MainContent_gvLineItems input[id*='rbAnswer']").click(function () { var p
$("#MainContent_gvLineItems input[id*='rbAnswer']").click(function () {
var p = $(this).find('[id$=MainContent_gvLineItems_pnlAnswer]'); // find the panel but this wont work so what can I do here?
});
我不知道我的语法对于id$=MainContent\u gvLineItems\u pnlAnswer是否正确,因为网格视图中的每一行的面板id都会更改
编辑
以下是一些网格视图:
<asp:TemplateField HeaderText="Answer">
<ItemTemplate>
<div id="dMainAnswer">
<asp:RadioButtonList ToolTip="Please provide an answer to the method." RepeatDirection="Horizontal" ID="rbAnswer" runat="server" SelectedValue='<%# DataBinder.Eval(Container, "DataItem.AnswerID")%>'>
<asp:ListItem Text="Yes" Value="Yes" style="color:green;"></asp:ListItem>
<asp:ListItem Text="No" Value="No" style="color:red;"></asp:ListItem>
<asp:ListItem Text="N/A" Value="N/A" style="color:gray;"></asp:ListItem>
<asp:ListItem Value="" Text="" style="display: none" />
</asp:RadioButtonList>
<asp:Panel ID="pnlAnswer" runat="server" Visible="False">
<div id="dMainAnswerResponsibleType">
<asp:RadioButtonList ID="rbRespType" ToolTip="Select responsible contact type." runat="server" RepeatDirection="Horizontal" AutoPostBack="true" SelectedValue='<%# DataBinder.Eval(Container, "DataItem.ResponsiblePartyType")%>' OnSelectedIndexChanged="rbRespType_SelectedIndexChanged">
<asp:ListItem Selected="True" Text="TKSE" Value="TKSE">TKSE</asp:ListItem>
<asp:ListItem Text="Other" Value="Other">Other</asp:ListItem>
<asp:ListItem Value="" Text="" style="display: none" />
</asp:RadioButtonList>
</div>
<div id="dMainAnswerResponsible"><a href="#" onclick="return false;" class="info">Res:<span>Select who is responsible in resolving this issue.</span></a>
<asp:DropDownList ID="ddlEmployees" runat="server"
DataSource="<%# GetEmployees() %>" SelectedValue='<%# Eval("TKSEContact") %>' DataTextField="FullName" Width="75px"
DataValueField="FullName"
ToolTip="Select the TKSE responsible party.">
</asp:DropDownList>
<asp:TextBox ID="txtContact" Text='<%# Eval("ResponsiblePartyContact") %>' Width="75px" MaxLength="50" runat="server" ToolTip="Enter the responsible contact name." Visible="false"></asp:TextBox>
</div>
<div id="dDueDate"><a href="#" onclick="return false;" class="info">Due:<span>Select the due date when you expect this issue to be resolved.</span></a>
<asp:TextBox ID="txtDueDate" Text='<%# Eval("DueDate") %>' Width="59px" runat="server" ToolTip="Select the due date." CssClass="datePickerDueDate"></asp:TextBox>
</div>
<div id="cSendToSugar">
<asp:CheckBox ID="chkSendToSugar" ToolTip="Send/Update issue to Sugar?" BackColor="Gold" Text="Send To Sugar?" Checked="true" runat="server" />
</div>
</asp:Panel>
</div>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
请注意面板pnlAnswer,其初始设置为不可见可见=False。它也不是radiobutton列表的同级。至少我不认为它是…使用.parents查找元素的父元素;如果给它一个css类,则可以执行以下操作:
$(this).parents(".class:first")
找到它。我假设面板是radiobuttonlist的父级。否则,您可能需要使用另一个Jquery方法。只要面板可见或隐藏,此功能就可以使用:
<asp:Panel .. style="display:none" />
使用.parents查找元素的父元素;如果给它一个css类,则可以执行以下操作:
$(this).parents(".class:first")
找到它。我假设面板是radiobuttonlist的父级。否则,您可能需要使用另一个Jquery方法。只要面板可见或隐藏,此功能就可以使用:
<asp:Panel .. style="display:none" />
我建议给你的面板一个css类,然后使用jQuery选择器。如果单选按钮是面板的一个按钮:
var panel = $(this).siblings(".answer");
这取决于面板在生成的标记中的位置,也许可以使用next或prev。如果您发布生成的标记,我可以更新此答案
现在,我们可以看到标记,感谢您需要家长,然后是兄弟姐妹,如下所示:
<someOtherElement> <!-- the grid view container -->
<div class="answer"></div> <!-- sibling of parent (maybe <div runat="server"> is better than panel?) -->
<div> <!-- parent -->
<input type="radio"> <!-- this -->
</div>
</someOtherElement>
我建议给你的面板一个css类,然后使用jQuery选择器。如果单选按钮是面板的一个按钮:
var panel = $(this).siblings(".answer");
这取决于面板在生成的标记中的位置,也许可以使用next或prev。如果您发布生成的标记,我可以更新此答案
现在,我们可以看到标记,感谢您需要家长,然后是兄弟姐妹,如下所示:
<someOtherElement> <!-- the grid view container -->
<div class="answer"></div> <!-- sibling of parent (maybe <div runat="server"> is better than panel?) -->
<div> <!-- parent -->
<input type="radio"> <!-- this -->
</div>
</someOtherElement>
如果您有许多面板和许多单选按钮,在这种情况下很容易找到靠近单选按钮的第一个面板。如果您有许多面板和许多单选按钮,在这种情况下,很容易找到单选按钮附近的第一个面板。但最初,此面板在我的asp.net中不可见runat=server visible=false,因此我认为我不能使用客户端id,可以吗?visible=false不会呈现给客户端,因此您将永远找不到该面板。如果希望面板可访问,请设置style=display:none;而是在面板上。问题是RadioButton列表不在面板内部,而是在面板外部。那么家长如何帮助我?@oJM86o你说的外部是什么意思?你能发布你的标记吗。如果没有它,很难告诉你正确的使用方法。嗨,Brian,谢谢你的耐心,我发布了我的标记,你可以看一下吗。但是最初这个面板在我的asp.net中是不可见的runat=server visible=false,所以我想我不能使用客户端id can I?visible=false不会呈现给客户端,所以你永远找不到该面板。如果希望面板可访问,请设置style=display:none;而是在面板上。问题是RadioButton列表不在面板内部,而是在面板外部。那么家长如何帮助我?@oJM86o你说的外部是什么意思?你能发布你的标记吗。没有它很难告诉你正确的方法。嗨,布莱恩,谢谢你的耐心,我发布了我的标记,你能看一下吗?问题是单选按钮列表在面板外面,而不是在面板里面,所以它不是兄弟姐妹。@oJM86o“外部”是指单选按钮列表作为父/子关系在面板中?@BrianMains-请看我的标记,单选按钮列表在面板前面。他们是分开的,不是父母/孩子。基本上,当您单击单选按钮时,数值为“否”,则面板应打开。现在我有一个代码,它的值是No,因此,现在我需要获取面板的引用并显示它,因为他们选择了“否”。问题是单选按钮列表在面板之外,而不是在面板内部,因此它不是兄弟节点。@oJM86o“外部”是指单选按钮列表作为父/子关系在面板中?@BrianMains-请参阅我的标记,RadioButton列表位于面板之前。他们是分开的,不是父母/孩子。基本上,当您单击单选按钮时,数值为“否”,则面板应打开。现在我有一个代码,它获取值No,所以现在我需要获取面板的引用并显示它,因为他们选择了No。