2014-12-14 4 views
1

Я использую столбец checkbox в gridview, который заполнен из базы данных SQL. Кнопка ниже gridview должна извлекать данные строк, чьи checkboxe's были проверены. Когда я перебираю все строки checkboxe's, ни один из них не имеет checked==true, хотя я проверил их все, прежде чем нажимать кнопку. Вот ASP.NET код:CheckBox «Проверено» значение в GridView всегда неверно

<asp:TemplateField> 
     <ItemTemplate> 
      <asp:CheckBox ID="chkRow" runat="server" /> 
     </ItemTemplate> 
</asp:TemplateField> 

и здесь действие этой кнопки, что перебирает все флажки Ряды:

protected void GetSelectedRecords(object sender, EventArgs e) 
{ 
    foreach (GridViewRow row in GridView1.Rows) 
    { 
     if (row.RowType == DataControlRowType.DataRow) 
     { 
      CheckBox chkRow = (row.Cells[0].FindControl("chkRow") as CheckBox);    
      if (chkRow != null && chkRow.Checked) //chkRow.Checked is always "false" 
      { 
       string name = row.Cells[2].Text; 
      } 
     } 
    }    
} 

Большое спасибо заранее. Я бы очень признателен за любую помощь.

+0

Попробуйте следующее: - 'row.FindControl (" chkRow ") в качестве CheckBox' –

+0

Спасибо. Я уже пробовал этот, но не работал. –

+0

Можете ли вы опубликовать полный код, который я имею в виду, включая разметку? Что-то еще должно происходить cz, ваш код выглядит хорошо. –

ответ

3

Если вы связываете свою сетку в Page_Load, убедитесь, что вы не привязываете свою сетку за пределами if(!IsPostBack){}. В противном случае вы потеряете checkboxe's на каждом postback и, следовательно, потеряете статус checkboxe's.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     //Bind Your Grid Here 
    } 
} 
+0

Спасибо. Таким образом, именно проблема. Большое спасибо. –

Смежные вопросы