2012-03-20 28 views
0

我目前有一個asp:GridView,它顯示一些BoundFields,然後是一個asp:TemplateField,它包含一個asp:DropDownList。我可以將多行添加到網格並單獨編輯它們中的每一行。查找使用jQuery在asp:GridView中編輯當前行

我需要了解的是如何獲取當前行中正在編輯的當前DropDownList的選定值。

我在,我在我的鏈接按鈕調用一個函數使用下面的代碼嘗試:

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

但這個代碼永遠只能返回者爲準排第一的價值。所以即使我在第三行中編輯DropDown並選擇第五個值,如果第一行的值爲2,它將只返回兩個值。

我的下拉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

是的,它會一直返回第一個下拉菜單,因爲您的選擇器正在請求默認鏈接按鈕。 $('。selectedItem')將返回所有下拉列表,並保留第一個默認值。

你的鏈接按鈕點擊事件應該是:

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

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

使 'addEditDetail(本)' 變成 'addEditDetail(本);返回false;'如果這對您很重要,請停止將「#」彈出到URL中。 – Graham 2012-03-20 17:19:06

+0

謝謝!這工作完美,實際上解決了我的一些問題。真的很感激它。 – Melanie 2012-03-21 10:41:50

0

爲什麼不將下拉控件ID值設置爲記錄ID?這樣,您可以使用在addEditDetail中傳遞的ID值並檢索特定的下拉菜單。我會將下拉ID設置爲"Dropdown" + Eval("ID")並將其用作JQuery中的標識符:$("#Dropdown" + ID)

相關問題