使用jQuery在asp:GridView中查找当前行

时间:2012-03-20 10:42:42

标签: jquery asp.net gridview drop-down-menu

我目前有一个asp:GridView,它显示一些BoundFields,然后是一个asp:TemplateField,它包含一个asp:DropDownList。我可以在网格中添加多行并分别编辑它们。

我需要知道的是如何获取当前行中正在编辑的当前DropDownList的选定值。

我尝试在我在链接按钮上调用的函数中使用以下代码:

var product = $('.selectedItem').val();

但是这段代码只会返回第一行的值。所以,即使我在第3行编辑DropDown并选择第5个值,如果第1行的值为2,它将只返回2个。

DropDown的html:

 <asp:TemplateField HeaderText="Vendor">
     <ItemTemplate>
        <asp:HiddenField ID="hidEntityID" runat="server" Value='<%# Eval("SomeID") %>' />
        <asp:DropDownList ID="ddlList" runat="server" DataSourceID="dsList" DataTextField="Value" DataValueField="ID" Font-Names="Verdana" Font-Size="11px" ForeColor="#2D2D2D" ClientIDMode="Static" CssClass="selectedItem" OnDataBound="ddlEntity_DataBound">
            <asp:ListItem Value="-1">--- Select ---</asp:ListItem>
        </asp:DropDownList>
        <asp:ObjectDataSource ID="dsList" runat="server" SelectMethod="GetList" TypeName="SomeClass" OldValuesParameterFormatString="original_{0}"></asp:ObjectDataSource>
     </ItemTemplate>
 </asp:TemplateField>

网格中的我的链接按钮:

 <ItemTemplate>
       <a href="#" onclick='addEditDetail(<%# Eval("ID") %>)'>Detail</a>
 </ItemTemplate>

基本上我需要的是找到我正在编辑或选择“编辑”的行的当前索引,然后只获取该特定DropDown的值。

任何建议都很棒。

由于

2 个答案:

答案 0 :(得分:2)

是的,当您的选择器请求默认链接按钮时,它将始终返回第一个下拉列表。 $(&#39; .selectedItem&#39;)将返回所有下拉列表,保留第一个下拉列表。

您的链接按钮点击事件应为:

 <ItemTemplate>
       <a href="#" onclick='addEditDetail(this)'>Detail</a>
 </ItemTemplate>

 function addEditDetail(linkBtn)
{
    var currentDropDown = $(linkBtn).closest("tr").find("select[id*='ddlList']");
    alert(currentDropDown.val());
}

答案 1 :(得分:0)

为什么不将Dropdown控件ID值设置为记录ID?这样,您可以使用addEditDetail中传递的ID值并检索特定的下拉列表。我将下拉列表ID设置为"Dropdown" + Eval("ID"),并将其用作JQuery中的标识符:$("#Dropdown" + ID)