2017-01-24 5 views
0

Существует список. Идентификатор списка: myListView. Существует скрытый элемент в списке (в itemTemplate). HiddenField ID: hfID. Есть флажок в listview (в itemTemplate). Флажок ID: checkBoxSec И есть кнопка из списка. Кнопка ID: btnConfirmSelectedустановите флажки в списке с кнопкой

Моя цель: я хотел бы получить выбранный флажок, когда я нажму кнопку asp.

Теперь я делюсь ASPX страница первой, а затем aspx.cs (код позади стороны)

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

могу подтвердить. Он работает отлично. Вы обернули DataBinding внутри 'if (! IsPostBack) {}' – VDWWD

+0

Попробуйте этот сценарий, пожалуйста; выберите некоторые флажки в списке и нажмите кнопку. И поставьте 2 точки отладки. Сначала можно быть в самом начале нажатия кнопки и второй для этого: 'if (checkBoxSec.Checked)', когда вы нажимаете кнопку, вы увидите, что вторая точка отладки никогда не появляется. он должен быть в этом объеме. потому что мы уже выбрали некоторые флажки. это проблема. Кстати, первая точка отладки. благодаря!! – selcuksel

ответ

0

У меня недостаточно репутации для комментариев, но я предлагаю вам также опубликовать свой код привязки данных.

Убедитесь, что вы не вызываете myListView.DataBind() на POST, потому что это объясняет, почему вы не получаете значения, которые вы ожидаете от своих элементов управления ASP.net.

+0

@selcuksel, вы собираетесь поделиться своим методом Page_Load были ли привязки данных? – Reego

+0

Дорогой @Reego, я понял, что я не могу делать то, что хочу, с кнопкой asp. потому что кнопка asp перезагружает страницу после того, как я нажму на нее. поэтому я потерял выбранные флажки. поэтому я думаю, что удалить этот вопрос. Я думаю, мне нужен код javascript. этот код jscript можно запустить с помощью одной кнопки html. и он может обнаруживать выбранные флажки в списке. и он может хранить значения id выбранного флажка в одной определенной строке. Предположим, что listview возвращает мне 100 записей. давайте предположим, что я выбрал три. предположим, что значения id равны 4, 66, 72. поэтому этот jscript должен вернуть мне эту строку: 4, 66, 72 – selcuksel

+0

Я думаю, что это можно сделать, используя кнопку, запускающую серверный код, как вы это делали вначале. – Reego