【发布时间】:2018-03-20 10:10:45
【问题描述】:
我有一些数据的datagridview,我在这个网格中添加了一个按钮(列),稍后再用它做某事。
//------------------- definitions
DataTable datatable = new DataTable("Points");
this.DATAGRID.DataSource = datatable; //connect data to DATAGRID set in designer
//adding button column
if (DATAGRID.Columns.Contains("Button_column") == false) //I want to add button column only once
{
DataGridViewButtonColumn button_column = new DataGridViewButtonColumn();
button_column.HeaderText = "ON/OFF";
button_column.Text = "Click";
button_column.Name = "Button_column";
button_column.UseColumnTextForButtonValue = true;
DATAGRID.Columns.Add(button_column);
}
//add next columns
datatable.Columns.Add("id", typeof(int));
datatable.Columns.Add("Date", typeof(string));
datatable.Columns.Add("Point", typeof(string));
datatable.Columns.Add("Status", typeof(string));
//set order for the user
DATAGRID.Columns["id"].DisplayIndex = 0; //will need id later
DATAGRID.Columns["id"].Visible = false; //but I hide it from user
DATAGRID.Columns["Date"].DisplayIndex = 1;
DATAGRID.Columns["Point"].DisplayIndex = 2;
DATAGRID.Columns["Status"].DisplayIndex = 3;
DATAGRID.Columns["Button_column"].DisplayIndex = 4;
//------------------- data
int i = 0;
while (r_dane_kontroli.Read())
{
//I add data here
datatable.Rows.Add(1, "Date", "Point"); //adding value to the button here won't work (error "to many columns")
//I TRY TO CHANGE BUTTON TEXT HERE - IN THE LOOP
//this doesn't work no matter if I adress the row or cell via index or name (tried other indexes too...)
if(status == "ON")
DATAGRID.Rows[i].Cells[0].Value = "OFF";
if(status == "OFF")
DATAGRID.Rows[i].Cells[0].Value = "ON";
i++;
}
没有错误。它根本行不通。我不想在这个之后创建额外的循环。
不管我是像上面那样以编程方式添加按钮列,还是通过设计器添加按钮列。效果是一样的。有什么解决办法吗?
【问题讨论】:
-
运行程序时,按钮是否显示空白文本?或者什么告诉你?
-
您是直接将名称分配给单元格
DATAGRID.Rows[i].Cells[0].Value = "OFF";必须以这种方式分配给按钮:string status = DATAGRID.Rows[e.RowIndex].Cells["Status"].Value.ToString(); if (status.Equals("ON") { button_collumn.Text = "OFF"; } else {button_collumn.Text = "ON"} -
程序(运行时)显示我在定义中定义的来自
button_collumn.Text = "Click";的点击 -
如果我理解正确,您首先尝试读取状态值(我认为应该是
i而不是e),然后以这种方式将按钮分配给文本:button_collumn.Text = "OFF"- 不幸的是我试过了它不起作用,或者我不明白……(错误:button_collumn 在当前(循环)上下文中不存在)
标签: c# winforms button datagridview