1

ListView に 2 つのボタンがあります。最初のボタンをクリックして、ListView-Item を更新します。2 番目のボタンをクリックして、ListView-Item を更新し、別のページにリダイレクトします。どちらの Button にもプロパティがありますCommandName="Update"CommandArgument-Property と-Event で問題を解決したかったOnItemUpdatedのですが、イベントでこの Property の値を取得する方法がわかりません。

<asp:ObjectDataSource ID="ods" runat="server" SelectMethod="Select" UpdateMethod="Update">
    <SelectParameters>
        <asp:Parameter ..... />
    </SelectParameters>
    <UpdateParameters>
        <asp:Parameters .... />
    </UpdateParameters>
</asp:ObjectDataSource>  

<asp:ListView ID="lv" runat="server" DataSourceID="ods" DataKeyNames="ID" OnItemUpdated="lv_OnItemUpdated">
    <ItemTemplate>...</ItemTemplate>  
    <EditItemTemplate>
        <asp:Button ID="btnUpdate" runat="server" CommandName="Update"/>
        <asp:Button ID="btnUpdate2" runat="server" CommandName="Update"/> 
    </EditItemTemplate>
</asp:ListView>

コードビハインドでは:

protected void lv_OnItemUpdated(object sender, ListViewUpdateEventArgs e)
{
    ...
}  

ユーザーがクリックしたボタンを lv_OnItemUpdated で決定することは可能ですか?

4

5 に答える 5

0

それを行うには 2 から 3 つの方法があります。

<asp:Button id="Button1"
   Text="Sort Ascending"
   CommandName="Sort"
   CommandArgument="Ascending"
   OnCommand="CommandBtn_Click" 
   runat="server"/>
 <asp:Button id="Button2"
   Text="Sort Descending"
   CommandName="Sort"
   CommandArgument="Descending"
   OnCommand="CommandBtn_Click" 
   runat="server"/>

サーバー側よりも次のものを使用できます。

void CommandBtn_Click(Object sender, CommandEventArgs e) 
{
    if(e.CommandName == "Sort")
    //do you work and so on
}

または、送信者をボタンとしてキャストし、ID を取得して、どのボタンであったかを確認できます。

((Button)sender)).ID

または、次のようにボタン ID を取得できます。

String ButtonID = Request["__EVENTTARGET"];

問題の解決に役立つことを願っています。

あなたは次のようにすることができます:

protected void lv_OnItemUpdated(object sender, ListViewUpdateEventArgs e)
{
    // either use e.CommandName
    // or user ((Button)sender)).ID
}
于 2013-07-10T09:29:45.537 に答える
0

各ボタンに個別の名前を付けます。コード ビハインドで同じイベント処理メソッドを使用して、両方のボタン クリック イベントを処理します。次に、メソッドを呼び出したボタンを確認します。

編集:回避策は、(クライアント側のスクリプトを使用して) サーバー側に移動する前に、JavaScript を使用して、クリックされたボタンの名前をフォームの非表示フィールドに入れることです。次に、リストビューで非表示フィールドの値をチェックして、どのボタンがクリックされたかを確認できます。

于 2013-07-10T09:19:20.463 に答える
-1

ItemCommandあなたはあなたのイベントに入る必要がありますListView

protected void lstvw_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        switch (e.CommandName)
        {
            case "new":
                try
                {
                    //e.CommandArgument
                    //e.CommandSource
                    // do your stuff here
                }
                catch (Exception ex)
                {

                }
                break;

            default:
                break;
        }
    }
于 2013-07-10T10:23:32.360 に答える