2017-01-24 2 views
0

リストビューがあります。リストビューID:myListView。 HiddenField ID:hfIDのlistview(itemTemplate内)にhiddenFieldがあります。 チェックボックスID(ItemTemplateにで)リストビューのチェックボックスがあります:checkBoxSec はまた、リストビューのうちのボタンがあります。ボタンのIDは:ボタンでリストビューの選択されたチェックボックスを取得

私の目的をbtnConfirmSelected:私はこのASP]ボタンをクリックすると、選択したチェックボックスを取得したいと思います。

ここで、iは最初のASPXページを共有し、次いでaspx.cs AM(側後ろコード)

1 ASPX側

<asp:ListView ID="myListView" runat="server" OnItemCommand="listView_OnItemCommand" 
    OnItemDataBound="listView_ItemDataBound"> 
    <LayoutTemplate> 
     <table id="listViewRecordsTable" cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered table-condensed"> 
      <thead> 
       <tr> 
        <th style="text-align: left;"> 
         <asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="false" onchange="CheckAll(this);" /> 
        </th> 

        <th style="text-align: left;"> 
         süreç no 
        </th> 

       </tr> 
      </thead> 
      <tbody> 
       <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
      </tbody> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr class="odd gradeX" id="<%# Eval("ID").ToString() == "BOS" ? "" : Eval("ID")%>"> 
      <td> 
       <asp:CheckBox ID="checkBoxSec" runat="server" CssClass="checkBoxExample" /> 
      </td> 
      <td> 
       <%# Eval("surecID").ToString() == "BOS" ? "" : Eval("surecID")%> 
      </td> 
     </tr> 
    </ItemTemplate> 
</asp:ListView> 

2 aspx.cs側の後ろに(コード側)

protected void btnConfirmSelected_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     foreach (var item in myListView.Items) 
     { 
      if (item.ItemType == ListViewItemType.DataItem) 
      { 
       HiddenField hfID = item.FindControl("hfID") as HiddenField; 
       CheckBox checkBoxSec = item.FindControl("checkBoxSec") as CheckBox; 
       if (checkBoxSec.Checked) 
       { 
        //some tasks in here. i put debug point to here. and then i click button after i select some checkbox. but debug never comes here. 
       } 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     labelResult.Text = ex.ToString(); 
    } 
} 

誰でも教えてください。間違いや欠けている箇所はどこですか? 私はここにデバッグポイントを置く:

if (checkBoxSec.Checked) 
{ 
    //some tasks in here. i put debug point to here. and then i click button after i select some checkbox. but debug never comes here. 
} 

が、ここで来ることはありません。私はいくつかのチェックボックスを選択した後、私はボタンをクリックしています。どうもありがとう。

+0

あなたのコードが動作し、私はそれをテストしました。あなたは 'if(checkBoxSec.Checked)'の中にいないボタンをクリックするだけでブレークポイントを設定し、何が起こっているのかを追跡します。 –

+0

が確認できます。それはうまく動作します。 'if(!IsPostBack){}'の中にDataBindingをラップしましたか? – VDWWD

+0

このシナリオを試してください。リストビューでいくつかのチェックボックスを選択し、ボタンをクリックします。そして、2つのデバッグポイントを置く。ボタンをクリックして2番目のデバッグポイントが決して来ないことを見るボタンをクリックすると 'if(checkBoxSec.Checked)'が表示されます。この範囲になければなりません。既にいくつかのチェックボックスが選択されているためです。これが問題です。最初のデバッグポイントは途中で問題ありません。ありがとう!! – selcuksel

答えて

0

私がコメントするのに十分な評判を持っていないが、私はあなたにも、コードを結合してデータを投稿することをお勧め。

あなたがあなたのASP.netコントロールの外に期待値を取得されていませんなぜそれが説明するだろうので、あなたがPOSTにmyListView.DataBind()を呼び出さないようにしてください。

+0

@selcuksel、あなたのPage_Loadメソッドを共有するつもりですデータバインディングが発生しましたか? – Reego

+0

親愛なる@Reego、私は私がaspボタンで欲しいものを行うことができないことに気づいた。 aspボタンは、クリックした後にページをリロードするためです。だから私は選択されたチェックボックスの詳細を失っている。だから私はこの質問を削除すると思います。私は、JavaScriptコードが必要だと思います。このjscriptコードは、1つのHTMLボタンで起動できます。リストビューで選択されたチェックボックスを検出することができます。選択されたチェックボックスのid値を定義された1つの文字列に保つことができます。 listviewが私に100レコードを返すと仮定しよう。私は3つを選択したと仮定しましょう。 id値が4,66,72であるとしましょう。このjscriptは私にこの文字列を返さなければなりません:4,66,72 – selcuksel

+0

最初にやったように、ボタン側のボタンを使ってサーバー側のコードを実行することができます。 – Reego

関連する問題