Вопрос о чекбоксе и datagridview - PullRequest
1 голос
/ 20 марта 2011

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

if (chkbranches.Checked == true)
{
  foreach (DataGridViewRow dr in gridviewholiday.Rows)
  {
    dr.Cells[0].Value = true;
  }

  for (int i = 0; i < gridviewholiday.Rows.Count; i++)
  {
    rowindex = i;
    list.add(rowindex);//to put the rowindex in array list
  }
}
else if (chkbranches.Checked == false)
{
  foreach (DataGridViewRow dr in gridviewholiday.Rows)
  {
    dr.Cells[0].Value = false;
    gridviewholiday.Refresh();
    gridviewholiday.ClearSelection();
    list.Clear();
  }
}

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Не совсем уверен, что вы пытаетесь сделать, но у меня есть нечто похожее с кнопкой, которая удаляет все отмеченные строки.Я использую поле шаблона, например, для флажка:

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

Затем для кода кнопки «Удалить» я делаю:

protected void btnDeleteChecked_Click(object sender, EventArgs e)
{
    foreach (GridViewRow row in gridOrders.Rows)
    {
        CheckBox cb = (CheckBox)row.FindControl("cbSelector");
        if ((null != cb) && cb.Checked)
        {
            uint id = Convert.ToUInt32(gridOrders.DataKeys[row.RowIndex].Value);
            gInvoiceDB.DeleteInvoice(id, true);
        }
    }
}
0 голосов
/ 23 марта 2011

Почему вы делаете цикл дважды, если проверяется chkbranches? Не можете ли вы добавить элементы в список на первом foreach? И в цикле для снятия отметки, почему вы обновляете и очищаете оба элемента управления каждый раз? Вероятно, нужно только один раз.

И как уже упоминалось, это ничего не делает с одиночными проверками. Если вы ожидаете этого, похоже, это проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...