asp.net gridview tr id对于jQuery是唯一的

时间:2010-08-27 12:19:13

标签: javascript asp.net jquery webforms

我创建了一个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>

它是下拉列表的一个变化,需要知道它在哪一行!

4 个答案:

答案 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")

引用该行?您可以控制分配给它的类,以便您可以选择它。我不知道标记是什么样的,但这可能是一个好的开始。