我目前有一个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的值。
任何建议都很棒。
由于
答案 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)
。