winform datagridview 的非绑定列问题,我就奇了怪了。。
一个窗体,上面有个datagridview本来绑定一个表,后来客户想再加一列新列,是数据表中没用,可以手动算出来的,于是我给datagridview 新增加了一列类型为DataGridViewTextBoxColumn,名称为mingxi的新列。
在初始化datagridview后赋值,但是窗体上现实不出来。我做的标记message也有值。
DataTable maindt = gongjv.GetTable(sql);
this.dataGridView1.DataSource = maindt;
foreach (DataGridViewRow var in this.dataGridView1.Rows)
{
var.Cells["mingxi"].Value = "123";
var.Cells["strCustomerNameDataGridViewTextBoxColumn"].Value = "222";
//var.Cells.a
MessageBox.Show(var.Cells["mingxi"].Value.ToString());
}
MessageBox.Show(this.dataGridView1.Rows[0].Cells["mingxi"].Value.ToString());//这里有值
this.dataGridView1["mingxi", 0].Value = "sss";
于是我在一个按钮里面再次用MessageBox.Show(this.dataGridView1.Rows[0].Cells["mingxi"].Value.ToString());的方法看值,结果报this.dataGridView1.Rows[0].Cells["mingxi"].Value为null。
我用同样的方法,改var.Cells["strCustomerNameDataGridViewTextBoxColumn"].Value(这列是用datatable绑定的)没用问题。
跪求大神,datagridview中不是绑定的列,如何赋值??之前貌似遇到过这个问题,但是用变通的方法绕过去了,但是我觉得,这玩意肯定是能赋值的,这次不想绕了。
跪求!!
[解决办法]
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if(this.dataGridView1.Columns[e.ColumnIndex].HeaderText =="")
{
e.Value= "";
}
}
[解决办法]
直接在DataTable:maindt上加一列再绑定
DataColumn column = maindt.Columns.Add("mingxi");
this.dataGridView1.DataSource = maindt;
[解决办法]
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' DataTable里只有Name列 Dim data As DataTable = New DataTable data.Columns.Add("Name") data.Rows.Add(New Object() {"zhangsan"}) data.Rows.Add(New Object() {"lisi"}) data.Rows.Add(New Object() {"wangwu"}) Me.DataGridView1.DataSource = data End Sub ' 直接赋值。已经Design了一列——ID列。 Private Sub DataGridView1_CellFormatting(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting If DataGridView1.Columns(e.ColumnIndex).HeaderText = "ID" Then e.Value = "001" End If End SubEnd Class