2011-08-30 27 views
1

こんにちは、私はこのひどい問題を抱えています。行動でAsp.Net ListView TextBoxからパラメータを渡す

enter image description here

イメージボタンは、2つのint型の変数に文字列を分割機能createparameterを起動し、しかし、私はにテキストボックスの値を送信するために何ができるか、テキストボックスQuantityTextBoxから最初の1を取得したいです機能、任意のアイデア?

protected string CreateParameter(object arg1, object arg2) 
     { 
      return string.Concat(arg1, "|", arg2); 
     } 

私はあなたが何をしたいのか

答えて

1

が動作しません、すべてのリスト項目のforeachの操作を行い、その後、私は他のリスト項目を気にいけないので、コントロールを見つけることよりも、これを行うには良い方法があります希望テキストボックスの値がユーザーによって変更される可能性があるためです。実行時にCommandArgumentに値をバインドしようとするのは妥当ではありません。

ListViewのItemCommandイベントを処理すると、ボタンがクリックされたListViewItemにアクセスできるため、FindControlを使用してテキストボックスを取得し、その値を確認できます。

これが機能するには、ImageButtonコントロールにCommandName値を追加する必要があります。そして、あなたは単にコマンド引数の製品IDを直接渡すでしょう。

だから、あなたのボタンは次のようになります。

<asp:ImageButton ID="btnAdd" runat="server" Tooltip="Aggregar producto" CommandName="AddProduct" 
    CommandArgument="<%# Eval("IdProduct") %>" /> 

そして、あなたの分離コードは、この(テストしていない)のようなものになります。

protected void lv_Productos_OnItemCommand(object sender, ListViewCommandEventArgs e) 
    { 
    if (String.Equals(e.CommandName, "AddProduct")) 
    { 
     // Get a reference to your textbox in this item 
     TextBox textbox = e.Item.FindControl("QuantityTextBox") as TextBox; 

     if (textbox != null) 
     { 
      int quant = 0; 
      if (int.TryParse(textbox.Value, quant)) 
      { 
      int prodId = (int)e.CommandArgument; 

      //do what you want with the quantity and product id 
      } 
     } 

    } 
    } 
関連する問題