2016-04-23 9 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の確認メッセージが表示され、そのメッセージで[はい]をクリックすると、その特定のエントリがデータベースから削除されます。

残念ながら、IDの行番号を削除することはできません。グループを追加したり削除したりすることができるため、すぐに矛盾することになります。

私が本当に必要とするのは、クリックしたリンクボタンと同じ行からGroupNameを取得する方法です。これを行う方法を理解できれば、簡単にエントリを削除するデータベースクエリを設定できます。しかし、別の解決策がある場合は、それも素晴らしいです。

lnkGroupRemoveイベントのサンプルコードはありません。私はこの問題をどこから始めるべきかわかりません。

この件に関するお手伝いをさせていただきます。

+0

あなたのクリックイベントです。あなたはsender.parentを使ってtrに参照することができます。そしてlblgroupnameを得るためにfindcontrolを実行できます。 – 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

関連する問題