我需要在具体的行上将DataGridViewTextBoxCell转换为DatagridVIewButtonCell。我试图使用以下代码来实现这一点:
foreach (DataGridViewRow row in dataGridViewImport.Rows)
{
if(row.Cells["Active"].Value.Equals("false"))
{
DataGridViewButtonCell buttonCell = new DataGridViewButtonCell();
row.Cells["check"] = buttonCell;
}
}但没起作用。有人知道会有什么问题吗?这种行为是在我绑定dataSource之后开始的。
此外,我还试图创建新列及其工作,但我只需要针对特定行的按钮,而不是所有列的按钮。
DataGridViewButtonColumn btnColumn = new DataGridViewButtonColumn();
btnColumn.Name = "test";
dataGridViewImport.Columns.Add(btnColumn);所有数据库代码:
public void prepareDataGridView()
{
dataTable = new DataTable();
addColumnsToDataTable(dataTable);
fillDataTable();
dataGridViewImport.DataSource = dataTable;
addHeaderCheckBox();
addButtonsToUnactiveRows();
styleDataGrid();
}
public void addColumnsToDataTable(DataTable dataTable)
{
dataTable.Columns.Add("check");
dataTable.Columns.Add("Position");
dataTable.Columns.Add("Positionsindex");
dataTable.Columns.Add("Textindex");
dataTable.Columns.Add("Stichwort");
dataTable.Columns.Add("Menge");
dataTable.Columns.Add("EH");
dataTable.Columns.Add("Active");
}
private void fillDataTable()
{
//FILL DATA
}
public void addButtonsToUnactiveRows()
{
foreach (DataGridViewRow row in dataGridViewImport.Rows)
{
if(row.Cells["Active"].Value.Equals("false"))
{
DataGridViewButtonCell buttonCell = new DataGridViewButtonCell();
row.Cells["check"] = buttonCell;
}
}
}发布于 2015-07-28 09:52:51
问题是在事件处理中,因为首先,我绑定数据,然后绘制DataGrid,然后尝试添加buttons.But,我需要在drawing.So之前添加按钮,然后用这个事件找到解决方案。
private void dataGridViewImport_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
addButtonsToUnactiveRows();
}发布于 2015-07-28 09:02:40
我尝试了你的代码与一些(不知道你是否错误地键入某个名称或意图),如下所示,它的工作。
DataTable dataTable;
private void Form1_Load(object sender, EventArgs e)
{
prepareDataGridView();
}
public void prepareDataGridView()
{
dataTable = new DataTable();
addColumnsToDataTable(dataTable);
fillDataTable();
avaEditDataGridViewImport.DataSource = dataTable;
//addHeaderCheckBox();
addButtonsToUnactiveRows();
//styleDataGrid();
}
public void addColumnsToDataTable(DataTable dataTable)
{
dataTable.Columns.Add("check");
dataTable.Columns.Add("Position");
dataTable.Columns.Add("Positionsindex");
dataTable.Columns.Add("Textindex");
dataTable.Columns.Add("Stichwort");
dataTable.Columns.Add("Menge");
dataTable.Columns.Add("EH");
dataTable.Columns.Add("Active");
}
private void fillDataTable()
{
for (int j = 1; j <= 10; j++)
{
dataTable.Rows.Add(j.ToString(), j, j, j, j, j, j, (j % 2 == 0 ? true : false));
}
}
public void addButtonsToUnactiveRows()
{
foreach (DataGridViewRow row in avaEditDataGridViewImport.Rows)
{
if (row.Cells["Active"].Value.ToString().Equals("False"))
{
DataGridViewButtonCell buttonCell = new DataGridViewButtonCell();
row.Cells["check"] = buttonCell;
}
}
}在您的代码和我的代码之间有一些不同(这是有用的):
DataGridView ( addButtonsToUnactiveRows() )和if语句。希望你能尽快解决:)
https://stackoverflow.com/questions/31670639
复制相似问题