我创建了一个ASP.NET WebForms Gridview,我需要访问javascript / jquery中表的每一行(例如<TR>
)....
不幸的是,看起来gridview生成的<tr>
都具有相同的ID!
有没有办法改变这个?任何想法我如何访问javascript中的特定行(基本上我试图调用一个方法并传递它需要访问的行ID)。
---更多信息---
<asp:GridView ..>
<Columns>
<asp:Templatefield>
<ItemTemplate>
<asp:DropDownList onchange="javascript:EnableControls('ROWIDHERE')">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
它是下拉列表的一个变化,需要知道它在哪一行!
答案 0 :(得分:1)
如果你让jQuery管理你的处理程序,你可以使用.closest()
做这样的事情。
$('select').change(function() {
var $tr = $(this).closest('tr');
// do something with the row
});
这会遍历祖先,直到你到达<tr>
。
如果您想继续使用内联处理程序,请尝试以下方法:
<asp:DropDownList onchange="javascript:EnableControls(this)">
function EnableControls(elem) {
var $tr = $(elem).closest('tr');
}
答案 1 :(得分:0)
您可以发布gridview的示例代码,以便我们可以比较模板吗?
我头脑中的一个选项是给每个类元素,它使用内联代码块来根据索引分配一个唯一的类。这是一个例子:
<tr class='uniqueClass<%# Container.DataItemIndex %>'>
这样您的元素就会生成为
<TR class='uniqueClass0' />
<TR class='uniqueClass1' />
<TR class='uniqueClass2' />
从这里,您可以通过简单地使用
来识别您在jquery中所需的内容var rowIndexRequired = 1;
var requireRow = $('.uniqueClass'+rowIndexRequired);
如果您提供更多详细信息,我可以提供更多帮助。
答案 2 :(得分:0)
您可以随时通过以下方式访问它:
$("#<%= GridView1.ClientID %>").find("tr:eq(0)")
或使用父母搜索:
//this reference to element
$(this).parents("tr:first")
HTH。
答案 3 :(得分:0)
如果您的需求是需要引用该行的行内的控件,那么您不能只使用这样的内容:
$(".myControlClass").parents("tr")
引用该行?您可以控制分配给它的类,以便您可以选择它。我不知道标记是什么样的,但这可能是一个好的开始。