2017-03-01 4 views
0

ボタンを押したときに私のデータリストをモーダルポップアップで開いてみようとしています。私の問題はデータトグルであり、データターゲットは私のデータリストのasp:Buttonで動作していません。しかし、ちょうどボタンで動作する、ボタンの問題は私が私のモーダルでデータリストショーで選択されたアイテムを作るために必要なCommandArgumentを使うことができないということです。asp:buttonではなくdatalist useコマンドの引数でボタンを作る方法

 <ItemTemplate> 
     <div> 
      <asp:Image CssClass="center-block" Width="200px" Height="200px" ImageUrl='<%# "\\productImages\\" + Eval("productImage") %>' runat="server" /> 
      <br /> 
      <b><%# Eval("ProductName") %></b> 
      <button id="btnmod" runat="server" type="button" class="btn-success btn-xs pull-right" data-toggle="modal" data-target="#myModal">Buy</button> 
      <asp:Button data-toggle="modal" data-target="#myModal" CssClass="btn-default pull-right btn-xs" ID="btnBuy" runat="server" Text="Buy" CommandName="Buy" CommandArgument='<%# Eval("productID") %>'/> 
      <b class="pull-right">$<%#string.Format("{0:n2}",Eval("ProductPrice")) %></b> 

      <br /> 

     </div> 

そして、これが私のモーダルをアップロードし、私のC#のコードです:私は、「ボタン」を押すと、

protected void dlProducts_ItemCommand(object source, DataListCommandEventArgs e) 
    { 

     DAL mydal = new DAL(conn); 
     string productID = Convert.ToString(e.CommandArgument); 
     mydal.AddParam("productID", productID); 
     DataSet ds = mydal.ExecuteProcedure("spGetProducts"); 

     lblmodName.Text = ds.Tables[0].Rows[0]["productName"].ToString(); 
     lblmoddescription.Text = ds.Tables[0].Rows[0]["productDescription"].ToString(); 
     modimgprod.ImageUrl = "\\productImages\\" + ds.Tables[0].Rows[0]["productImage"].ToString(); 



    } 

は今のところ、それはモーダルが、空を示し、そして、私は、ASPをクリックした場合:ボタンを押してデータをロードしてモーダルに入れますが、モーダルを表示しません。だから、もう一度ボタンを押すと、今度は満たされます。私はいくつかの研究をしてきましたが、私は単にボタンをクリックするとasp:ボタンをクリックするイベントを発生させることができ、運がないことがあります。私は立ち往生し、すべての助けに感謝します!

答えて

1

残りのページを見ることなくここで小さな仮定をして、サーバーへのポストバックを行い、モーダルダイアログを埋める。これにより、ページが完全にリフレッシュされるため、データ属性はダイアログの表示に影響を与えません。

"Quickest"ルートは、表示するようにモーダルに指示するItemCommentコードにスタートアップJSを登録することです。私はすぐに完全なスクリプトで投稿を更新します。

jQueryがページに含まれていると仮定すると、メソッドの一番下に、このようなことが起こる可能性があります。

Page.ClientScript.RegisterStartupScript(this.GetType(), "DialogOpen", "$('#myModal').modal('show');", true); 

これは、更新時にダイアログを開くスクリプトブロックを追加します。

これからはもっと良い方法がありますが、これを実現するにはさらに時間がかかります。

+0

これは機能します!どうもありがとうございます! – Marq

+0

うれしい!将来、ページのポストバックと完全な再レンダリングが必要なデータ・リスト・アクションではなく、Ajaxコールを使用して、すべてのクライアント側でこれを実行することを検討してください。この特定の問題の簡単な答えよりはるかに多く –

関連する問題