我有一个包含绑定列和未绑定列的datagridview,我想合并2个所需绑定列(a和b)的值,因此列c(未绑定)包含a和b的值
有可能吗?
Nb:很抱歉,我无法发布照片以获得更好的解释
谢谢
答案 0 :(得分:0)
可能有不同的方式。最简单的方法可能是使用具有3列a,b和c的DataTable
,其中c是具有a + b作为表达式的expression column。
另一个选择是使用DataGridView
的{{3}}事件。 (您还可以使用其他一些事件,例如CellFormatting
。)
示例-表达式列
var dt = new DataTable();
dt.Columns.Add("A", typeof(int));
dt.Columns.Add("B", typeof(string));
dt.Columns.Add("C", typeof(string), "CONVERT(A, System.String) + B");
dt.Rows.Add(1, "One");
dt.Rows.Add(2, "Two");
dataGridView1.DataSource = dt;
示例-RowPrePaint
dataGridView1.Columns.Add("A", "A");
dataGridView1.Columns.Add("B", "B");
dataGridView1.Columns.Add("C", "C");
dataGridView1.Rows.Add(1, "One");
dataGridView1.Rows.Add(2, "Two");
dataGridView1.RowPrePaint += (s, a) =>
{
if (a.RowIndex >= 0)
{
var g = (DataGridView)s;
g["C", a.RowIndex].Value = $"{g["A", a.RowIndex].Value}{g["B", a.RowIndex].Value}";
}
};
答案 1 :(得分:0)
您可以在CellFormatting
事件中根据需要为“ c”列单元格生成值:
private void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.RowIndex < 0) return;
int cIndex = 2;
if (e.ColumnIndex != cIndex) return;
var grid = (DataGridView)sender;
int aIndex = 0, bIndex = 1, row = e.RowIndex;
e.Value = String.Format("{0} {1}", grid[aIndex, row].Value, grid[bIndex, row].Value);
e.FormattingApplied = true;
}