2016-04-23 26 views
1

我有一個動態生成的ListView,它顯示從數據庫中檢索的一組組。 ListView控件模板看起來是這樣的:如何檢索與LinkBut​​ton相同的行中的ListView項目的值

<asp:ListView ID="lvGroups" runat="server"> 
     <ItemTemplate> 
      <tr> 
       <td> 
        <asp:Label ID="lblGroupName" runat="server" Text='<%# Eval("GroupName") %>' /> 
       </td> 
       <td> 
        <asp:LinkButton ID="lnkRemove" runat="server" Text="Remove" OnClick="lnkGroupRemove" OnClientClick="Confirm()" /> 
       </td> 
      </tr> 

     </ItemTemplate> 
    </asp:ListView> 

正如你所看到的,有一個數值,它是從數據庫中抽取,然後一個LinkBut​​ton用於刪除該值。當點擊鏈接按鈕時,它會顯示一個javascript確認消息,如果在該消息上單擊是,那麼該特定條目將從數據庫中刪除。

不幸的是,我不能簡單地刪除GroupName所在的ID =行號,因爲您既可以添加也可以刪除組,這樣會很快變得不一致。

我真正需要的是一種方法來檢索與單擊的鏈接按鈕相同的行的GroupName,如果我能弄清楚如何做到這一點,那麼我可以輕鬆地配置數據庫查詢以成功刪除條目。如果你有另一種解決方案,那也是很棒的。

我很遺憾地說,我沒有lnkGroupRemove事件的示例代碼,因爲我根本不知道從哪裏開始解決這個問題。

任何有關這個問題的幫助將不勝感激!

+0

在您的點擊事件。你可以使用sender.parent引用tr,然後你可以通過findcontrol來獲得lblgroupname。 – Fafsi

回答

2

可以使用DataKeyNames屬性:

<asp:ListView ID="lvGroups" runat="server" DataKeyNames="ID,GroupName" > 

,並獲得價值這樣在後臺代碼:

protected void lnkGroupRemove(object sender, EventArgs e) 
{ 
    ListViewItem item = (sender as LinkButton).NamingContainer as ListViewItem; 
    int ID = (int)lvGroups.DataKeys[item.DataItemIndex].Values["ID"]; 
    string groupName = (string)lvGroups.DataKeys[item.DataItemIndex].Values["GroupName"]; 
} 

我添加了一個ID值,表明附加字段可以添加到DataKeyNames並從代碼隱藏中檢索,包括數據源中但未在ListView中顯示的字段。

+0

老實說,在過去的幾天裏,我從這個項目中學到了很多東西,我不得不說,絕大多數的東西都與你已經回答的東西有關。我以前不知道DataKeyNames,但現在我肯定會回頭看看我可以用這個功能做些什麼。它工作得很好,謝謝! – user3530169

+0

我很高興能幫上忙!由於您的用戶名不容易與其他幾個類似的用戶區分開來,我之前並不知道我們之前已經溝通過。我會盡量記住以「169」結尾的用戶。 :-) – ConnorsFan

相關問題