我创建了一个具有datagridview的用户控件。然后我从datagridview的文本文件中动态添加行和列。
我的问题是我需要在每一行中都有按钮的列。在第一行中,按钮的文本为“ Test1”,在第二行中,“ Test2”的文本不同。
在Google上搜索后,我尝试了此代码
var testButton = new DataGridViewButtonColumn();
testButton.Name = "Test";
testButton.HeaderText = "Test";
testButton.UseColumnTextForButtonValue = true;
testButton.Text = "Test1";
this.dataGridView1.Columns.Add(testButton);
答案 0 :(得分:0)
假设您使用的是Windows窗体,则需要将DataGridViewButtonColumn添加到DataGridView
-不直接添加到DataTable
。
这应该在将DataTable
绑定到DataGridView
之后的某个地方发生。
类似的事情应该起作用:
DataGridViewButtonColumn uninstallButtonColumn = new DataGridViewButtonColumn();
uninstallButtonColumn.Name = "uninstall_column";
uninstallButtonColumn.Text = "Uninstall";
int columnIndex = 2;
if (dataGridViewSoftware.Columns["uninstall_column"] == null)
{
dataGridViewSoftware.Columns.Insert(columnIndex, uninstallButtonColumn);
}
当然,您必须处理网格的CellClick
事件,才能使用按钮进行任何操作。
将此内容添加到您的DataGridView
初始化代码中
dataGridViewSoftware.CellClick += dataGridViewSoftware_CellClick;
然后创建处理程序:
private void dataGridViewSoftware_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == dataGridViewSoftware.Columns["uninstall_column"].Index)
{
//Do something with your button.
}
}
答案 1 :(得分:-2)
//Change the Button text property on a data-bound event
protected void YourDataGridViewId_RowDataBound(object sender, GridViewRowEventArgs e)
{
// finding the button control..`enter code here`.
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button YourbtnVariable = (Button)e.Row.FindControl("YourbuttonID");
YourbtnVariable.Text = "Text"+e.Row.RowIndex+1;
//e.Row.RowIndex+1 will give u index of row every time incremented with 1
}
}