2017-04-07 7 views
1

チェックボックスリストで選択した項目からボタンを作成するリピータがあります。チェックボックスリストは、アイテムコードのリストです。ASP C#リピータボタンがメソッドに文字列を渡していません

ボタンが正しく表示され、アイテムコードがテキストとして表示されます。それは動作します。

クリックすると、ボタンは、ボタンの項目コードを使用してメソッドを呼び出して、データをページに挿入するメソッドを呼び出しますが、それは起こっていません。ボタンが空の値を渡していると思います。

リピーターボタンをクリックして正しい値を渡すにはどうすればよいですか?このメソッドは通常のテキストボックスで動作しますが、リピータボタンで動作するようにはできませんでした。

ASPX

` <div style="width: 98%; overflow-x: scroll;"> 
    <asp:Repeater ID="rptItemButtons" 
       runat="server"> 

      <ItemTemplate> 
       <asp:Button ID="btnItemButton" 
        runat="server" 
        Text='<%# Container.DataItem.ToString() %>' 

        CommandArgument='<%# Container.DataItem.ToString() %>' 
        CommandName="repeater_ItemCommand" 
        /> 

      </ItemTemplate> 
      </asp:Repeater> 
    </div>` 

C#

public void repeater_ItemCommand(object sender, CommandEventArgs e) 
    { 
    SaveUserInputsAction();               
    SaveDataAction(); 
    lblTestMessage.Text = e.CommandArgument.ToString(); 
    GetItemDetails(e.CommandArgument.ToString());   GetCostFactors(e.CommandArgument.ToString()); 
    } 
+0

あなたは 'Container.ItemIndex'を' Container.DataItem'の代わりに 'CommandArgument'として使う必要があると思います – VDWWD

答えて

1

RepeaterOnItemCommandプロパティを設定してみてください:

ASPX:

<asp:Repeater ID="rptItemButtons" OnItemCommand="Repeater_ItemCommand" runat="server"> 
    <ItemTemplate> 
     <asp:Button ID="btnItemButton" runat="server" 
      Text='<%# Container.DataItem.ToString() %>' 
      CommandArgument='<%# Container.DataItem.ToString() %>' 
     /> 
    </ItemTemplate> 
</asp:Repeater> 

分離コード:もう一度あなたのコードを確認した後

public void Repeater_ItemCommand(object sender, RepeaterCommandEventArgs e) 
{ 
    SaveUserInputsAction();               
    SaveDataAction(); 
    lblTestMessage.Text = e.CommandArgument.ToString(); 
    GetItemDetails(e.CommandArgument.ToString()); 
    GetCostFactors(e.CommandArgument.ToString()); 
} 

EDIT、私はあなたのボタンをCommandName="repeater_ItemCommand"を指定していることに気づきました。あなたがそれをOnCommand="repeater_ItemCommand"に変更すると、実際にはうまくいくかもしれません。私はRepeaterでイベントハンドラを指定するようなものですが、それは個人的な好みになるかもしれません。

+1

それがそれを解決しました!ありがとう@ダナ、あなたは最高です、私は本当にそれを感謝します。 –

関連する問題