у меня есть простая таблица данных
MySqlCommand cmd = m.getmodel(stmt);
MySqlDataAdapter dataAdapter = new MySqlDataAdapter(cmd);
DataTable data = new DataTable(equip);
dataAdapter.Fill(data);
var checkBoxColumn = new DataColumn("Select", typeof(bool));
data.Columns.Add(checkBoxColumn);
checkBoxColumn.SetOrdinal(0); // Move column to the beginning
foreach (DataRow row in data.Rows)
{
row["Select"] = false;
}
//to make all data uneditable except first
foreach (DataColumn col in data.Columns)
{
if (col.ColumnName == "Select")
col.ReadOnly = false;
else
col.ReadOnly = true;
}
data2.ItemsSource = data.DefaultView;
checkBoxColumn.ReadOnly = false;
data.RowChanged += ChangeEvent_RowChanged_wh;
, и вот мое событие изменения
void ChangeEvent_RowChanged_wh(object sender, System.Data.DataRowChangeEventArgs e)
{
//wh is a global arraylist
var imei = e.Row["imei"];
if (Convert.ToBoolean(e.Row["Select"]))
{
wh.Add(imei);
}
else
{
wh.Remove(imei);
}
int cr_c = wh.Count;
wh_cr_bd.Badge = cr_c;
lose_focus();
}
, теперь посмотрите на эту картинку
этот значок вниз связан с количеством выборов, как упомянуто выше
теперь он показывает, что я проверил только 3, но на самом деле я проверил только 2, я исправляю это, нажимая снаружи Он программирует, но это неэффективно, особенно для потребителей, у кого-нибудь есть идеи, что я могу потерять фокус из всей сетки данных, не щелкая снаружи? я пытался:
datagrid.Focus();
datagrid.UnselectAll();
но без надежды