首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

winform datagridview 的非绑定列有关问题,小弟我就奇了怪了。

2012-08-30 
winform datagridview 的非绑定列问题,我就奇了怪了。。一个窗体,上面有个datagridview本来绑定一个表,后来

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;

[解决办法]

探讨
引用:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if(this.dataGridView1.Columns[e.ColumnIndex].HeaderText =="")
{
e.Value = "";
……

[解决办法]
VB.NET code
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 

热点排行