может кто-нибудь скажет мне, почему мой флажок не проверяется? Я использую Windows.Forms и сетка устанавливается на ReadOnly = False вот код я использую:DataGridView флажок не обновляется
private void populateView()
{
try
{
DataTable theTable = [query execution]
DataView dv = theTable.DefaultView;
dataGrid1.DataSource = dv;
DataGridViewCheckBoxColumn[] checkBoxes = new DataGridViewCheckBoxColumn[20];
int pos = 0;
foreach (DataGridViewColumn column in RouteRampView.Columns)
{
if (column.Name.Equals("A"))
{
column.Visible = false;
}
if (column.Name.Equals("B"))
{
column.Visible = true;
column.ReadOnly = true;
}
if (column.Name.Equals("C"))
{
column.Visible = true;
column.ReadOnly = true;
}
if (column.Name.Contains("D"))
{
var doWork = new DataGridViewCheckBoxColumn();
doWork.Name = column.Name +"BOX";
doWork.HeaderText = column.Name;
doWork.FalseValue = "0";
doWork.TrueValue = "1";
column.Visible = true;
checkBoxes[pos] = doWork;
pos++;
}
}
foreach (DataGridViewCheckBoxColumn column in checkBoxes)
{
if (column != null)
{
dataGrid1.Columns.Add(column);
}
}
}
catch (Exception e)
{
log.Error("Error occured when populating grid", e);
}
}
и после создания вида я называю:
private void fillValues()
{
foreach (DataGridViewRow row in dataGrid1.Rows)
{
DataGridViewCheckBoxCell col1 = (DataGridViewCheckBoxCell)row.Cells["D1BOX"];
col1.Selected = ((Decimal)row.Cells["D1"].Value > 0);
col1.ThreeState = ((Decimal)row.Cells["D1"].Value > 0);
col1.Value = ((Decimal)row.Cells["D1"].Value > 0 ? col1.TrueValue : col1.FalseValue);
DataGridViewCheckBoxCell col2 = (DataGridViewCheckBoxCell)row.Cells["D2BOX"];
col2.Selected = ((Decimal)row.Cells["D2"].Value > 0);
col2.ThreeState = ((Decimal)row.Cells["D2"].Value > 0);
col2.Value = ((Decimal)row.Cells["D2"].Value > 0 ? col1.TrueValue : col1.FalseValue);
DataGridViewCheckBoxCell col3 = (DataGridViewCheckBoxCell)row.Cells["D3BOX"];
col3.Selected = ((Decimal)row.Cells["D3"].Value > 0);
col3.ThreeState = ((Decimal)row.Cells["D3"].Value > 0);
col3.Value = ((Decimal)row.Cells["D3"].Value > 0 ? col1.TrueValue : col1.FalseValue);
DataGridViewCheckBoxCell col4 = (DataGridViewCheckBoxCell)row.Cells["D4BOX"];
col4.Selected = ((Decimal)row.Cells["D4"].Value > 0);
col4.ThreeState = ((Decimal)row.Cells["D4"].Value > 0);
col4.Value = ((Decimal)row.Cells["D4"].Value > 0 ? col1.TrueValue : col1.FalseValue);
DataGridViewCheckBoxCell col5 = (DataGridViewCheckBoxCell)row.Cells["D5BOX"];
col5.Selected = ((Decimal)row.Cells["D5"].Value > 0);
col5.ThreeState = ((Decimal)row.Cells["D5"].Value > 0);
col5.Value = ((Decimal)row.Cells["D5"].Value > 0 ? col1.TrueValue : col1.
}
Когда значение изменяется обработчик события затем вызывает
RouteRampView.EndEdit();
RouteRampView.Refresh();
При отладке я видел, что параметр значения флажка присваивается правильное значение, но по какой-то причине коробка никогда не проверяются.
Есть ли у AutoPostBack = 'истинный' установлен? – Marco
Я не устанавливаю или не устанавливаю AutoPostBack, поэтому он должен иметь значение по умолчанию – macken88
@Serv Это «WinForms», я уверен, что «AutoPostBack» - это вещь. – Anthony