2014-10-11 2 views
1

я пытался включить кнопку в GridView, когда количество флажков выбрано равно 3.Подсчет количество проверяемых флажков в GridView в C#

Я использовал этот код, но кнопка в GridView всегда отключена, Зачем?

Вы можете мне помочь?

Спасибо за внимание.

int count; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      BindGrid(); 

      if (count == 3) 
      { 
       btn.Enabled = true; 
      } 
      else 
      { 
       btn.Enabled = false; 
      } 
     } 
    } 


    protected void btn_Click(object sender, EventArgs e) 
    { 
     string strname = string.Empty; 
     string strnamesplit = string.Empty; 
     count = 0; 

     foreach (GridViewRow gvrow in GridView1.Rows) 
     { 
      HiddenField hiddenField = (HiddenField)gvrow.FindControl("HiddenField1"); 
      CheckBox chk = (CheckBox)gvrow.FindControl("cb"); 

      if (chk != null & chk.Checked) 
      { 
       strname += hiddenField.Value + ','; 
       count++; 
      } 
     } 

     strname = strname.Trim(",".ToCharArray()); 
     Response.Write("Selected UserNames: <b>" + strname + "</b><br /><br />"); 

     string[] words = strname.Split(','); 
     foreach (string word in words) 
     { 
      Response.Write(word + "<br />"); 
     } 

     Response.Write(count.ToString() + "<br />"); 
    } 

<asp:CheckBox ID="cb" runat="server" AutoPostBack="true" /> 
<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Eval("id")%>' /> 
<asp:Button runat="server" ID="btn" Text="Enviar" OnClick="btn_Click" Enabled="false" /> 
+0

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

+0

счетчик переменных не поддерживается из метода page.load –

ответ

0

Вы должны использовать OnCheckedChanged событие.

Изменить страницу ASPX:

<asp:CheckBox ID="cb" runat="server" AutoPostBack="true" 
    OnCheckedChanged="CheckBox1_CheckedChanged" /> 

изменить код позади:

protected void CheckBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox chkTest = (CheckBox)sender; 
    GridViewRow grdRow = (GridViewRow)chkTest.NamingContainer; 
    count = 0; 

    foreach (GridViewRow gvrow in GridView1.Rows) 
    { 
     CheckBox chk = (CheckBox)gvrow.FindControl("cb"); 

     if (chk.Checked) 
     { 
      count++; 
     } 
    } 

    if (count == 3) 
    { 
     btn.Enabled = true; 
    } 
    else 
    { 
     btn.Enabled = false; 
    } 

    Response.Write(count.ToString() + "<br />"); 
} 

protected void btn_Click(object sender, EventArgs e) 
{ 
    string strname = string.Empty; 

    foreach (GridViewRow gvrow in GridView1.Rows) 
    { 
     HiddenField hiddenField = (HiddenField)gvrow.FindControl("HiddenField1"); 
     CheckBox chk2 = (CheckBox)gvrow.FindControl("cb"); 

     if (chk2 != null & chk2.Checked) 
     { 
      strname += hiddenField.Value + ","; 
      strname = strname.Trim(",".ToCharArray()); 
      Response.Write("Selected UserNames: <b>" + strname.ToString() + "</b><br />"); 

      string[] words = strname.Split(','); 
      foreach (string word in words) 
      { 
       Response.Write(word.ToString() + "<br /><br />"); 
      } 
     } 
    } 
} 
+0

приятно, спасибо! –

0

Потому что перед запуском page_Load перед btn_Click. Я предлагаю вам изменить событие вас кодов Page_PreRender:

protected void Page_PreRender(object sender, EventArgs e) 
{ 
     if (count == 3) 
     { 
      btn.Enabled = true; 
     } 
     else 
     { 
      btn.Enabled = false; 
     } 
} 
+0

спасибо, но у меня нет изменений в моем коде ... кнопка в GridView всегда отключена –

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