5

リストビューの各行にボタンがあります。
データ項目の ID を取得したいクリック イベントのメソッドがあります。リスト ビューに
を配置して、ID を保存しました。 でも、hidden field

ListView1.FindControl("hiddenField") is returning null. 

いくつかの異なるイベント引数を試しましたが、空のイベント引数のみがこのボタンで機能しているため、イベント引数には何もありません。
ボタンのコマンドを設定して commandEventArgs を呼び出そうとしましたが、「eventArgs」以外にどのイベント引数を使用しても、次のようになります。

「btnManage_Click」のオーバーロードがデリゲート「System.EventHandler」に一致しません

このボタンにイベント引数を取得するにはどうすればよいですか?

編集

ボタンは、次の ListView の ItemTemplate セクションにあります

<asp:ListView ID="ListView1" runat="server" DataSourceID="LinqDataSource1" EnableModelValidation="True" DataKeyNames="Id" InsertItemPosition="LastItem" >

 <LayoutTemplate>
              <table id="Table2" class="table" runat="server">
                <tr id="Tr1" runat="server">
                  <td id="Td1" runat="server">
                    <table runat="server" id="itemPlaceholderContainer" style="background-color: #FFFFFF; border-collapse: collapse; border-color: #999999; border-style: none; border-width: 1px; font-family: Verdana, Arial, Helvetica, sans-serif;" border="1">
                      <tr id="Tr2" runat="server" style="background-color: #DCDCDC; color: #000000;">
                        <th id="Th1" runat="server"></th>
                        <th id="Th2" runat="server">Name</th>
                        <th id="Th3" runat="server">Manage</th>
                      </tr>
                      <tr runat="server" id="itemPlaceholder"></tr>
                    </table>
                  </td>
                </tr>
                <tr id="Tr3" runat="server">
                  <td id="Td2" runat="server" style="text-align: center; background-color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000;"></td>
                </tr>
              </table>
            </LayoutTemplate>
4

3 に答える 3

7

このように使用できます

 <asp:Button runat="server" CommandArgument='<%# DisplayIndex %>'/>

API を確認する

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listviewcommandeventargs.aspx

ボタンがある場合は、単に

 protected void templateButton_OnClick(object sender, EventArgs e)
 {
     Button myButton = (Button)sender;
 }

詳細

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.itemcommand.aspx

編集 1

プロパティ「id」があると仮定すると、次のように使用できます

  CommandArgument='<%#Eval("id")' 

編集 2

大文字と小文字が区別されるため、

 DataKeyNames="Id"

したがって、次のように使用する必要があります

CommandArgument='<%#Eval("Id")' 

次のように使用します

 int i = Convert.ToInt32(myButton.CommandArgument.ToString());
于 2013-03-11T04:35:13.197 に答える
0
You can try this: 

ListView lv = (ListView)sender 

ここで、 senderは buttonclick イベントのパラメーターです。次に、情報を取得してみてください。

于 2013-03-11T04:38:38.250 に答える
0

次のコード行を使用して、LinkBut​​ton を介してリスト ビューを使用して表示されたアイテムの ID を送信します。

<asp:LinkButton ID="LinkButton1" 
                runat="server" 
                Text="Quick View" 
                Font-Size="Small" 
                OnCommand="QuickView" 
                CommandArgument='<%# Eval("Hoarding_Id") %>' >   
</asp:LinkButton>

そして、それはうまく機能しています...

于 2015-07-05T12:57:08.133 に答える