一个窗体,上面有个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中不是绑定的列,如何赋值??之前貌似遇到过这个问题,但是用变通的方法绕过去了,但是我觉得,这玩意肯定是能赋值的,这次不想绕了。
跪求!!
在初始化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中不是绑定的列,如何赋值??之前貌似遇到过这个问题,但是用变通的方法绕过去了,但是我觉得,这玩意肯定是能赋值的,这次不想绕了。
跪求!!
{
if(this.dataGridView1.Columns[e.ColumnIndex].HeaderText =="")
{
e.Value= "";
}
}
this.dataGridView1.DataSource = maindt;
我觉得datagridview是c#winform里面精髓的精髓,想搞的透彻一点。。
我觉得应该有个方法直接能赋值,或者是赋值之后有个什么方法保存一下就行了,但是查半天查不到。。
wuyq11给的就是直接赋值啊我个人以为还是修改数据源好,因为你的新增列也是要计算的。直接在DataTable里增加出来,
然后给新增列赋值,再绑定好。DataGridView也就是表示控件。
' 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
还有个问题,为什么this.dataGridView1.Rows[0].Cells["mingxi"].Value="123"会无缘无故的实效?
还有个问题,为什么this.dataGridView1.Rows[0].Cells["mingxi"].Value="123"会无缘无故的实效?
this.dataGridView1.Rows[0].Cells["mingxi"].Value="123" 因为mingxi在数据源里没有,所以不能用ColumnName来赋值。实际你Design列的时候,也没有地方给你设定ColumnName 吧。但是可以通过Index来赋值的。this.dataGridView1.Rows[0].Cells[0].Value="123"
foreach (DataGridViewRow var in this.dataGridView1.Rows)
{
var.Cells[11].Value = "123";
var.Cells["strCustomerNameDataGridViewTextBoxColumn"].Value = "222";
//var.Cells.a
MessageBox.Show(var.Cells["mingxi"].Value.ToString());
}
弹出窗口依然可以弹出123,但是窗体里面依然显示不出123,和var.Cells["mingxi"].Value赋值的结果一样,谢谢神了,我就是想知道,这里为什么显示不出来。
// mingxi
//
this.mingxi.HeaderText = "利息金额明细";
this.mingxi.Name = "mingxi";
this.mingxi.ReadOnly = true;
这是design里面的代码。没问题啊,全都是默认的
这个事件里面赋值,确实没问题,我现在就想知道,我那样赋值,为什么不显示呢??各路大神快显神通吧