GridView

cherho0 2009-08-14 09:17:09
我在做一个C/S的查询分析器,查表的时候有空值的时候在GridView中显示为“(空)”,我想让它显示“NULL”,该怎么做,我开始用重新赋值的方法,发现不行,因为赋值只对string类型的有用,请大家帮忙。还有GridView有没有自动列宽的属性,怎么设置
...全文
151 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
cherho0 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dancingbit 的回复:]
如果是DataGrid的话就比较复杂了,要为每一列添加相应的DataGridColumnStyle的派生类。
设置派生类的NullText属性。
[/Quote]
还望您指点,能写下相应的代码么
dancingbit 2009-08-14
  • 打赏
  • 举报
回复
如果是DataGrid的话就比较复杂了,要为每一列添加相应的DataGridColumnStyle的派生类。
设置派生类的NullText属性。
a12321321321312321 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hbxtlhx 的回复:]
当然也可以通过编辑的方式来设置,比如:

DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
dataGridViewCellStyle1.NullValue = "空的值";
this.Column1.DefaultCellStyle = dataGridViewCellStyle1;
[/Quote]
最简单的方法就是这个,
cherho0 2009-08-14
  • 打赏
  • 举报
回复
下面的高手们,我说的是DataGrid,不好意思,弄错了,因为datagridview在现实图片等类型时报错,所以只有用DataGrid,可是它没有哪个属性啊
cherho0 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 simplepjlife 的回复:]
if (DataGridView.ROWS[0][0].ToString() == "")
{
    DataGridView.ROWS[0][0]  = "null";
}

GridView列宽根据数据长度 自动变化很容易出问题。 一般做法 是 用SUBSTRING, 列宽固定, 数据长度截取一定长度控制起来。
[/Quote]
我已经说了啊,这种类型只对STRING有用
feifeiyaqi3 2009-08-14
  • 打赏
  • 举报
回复
mark
北京的雾霾天 2009-08-14
  • 打赏
  • 举报
回复
当然也可以通过编辑的方式来设置,比如:

DataGridViewCellStyle dataGridViewCellStyle1 = new DataGridViewCellStyle();
dataGridViewCellStyle1.NullValue = "空的值";
this.Column1.DefaultCellStyle = dataGridViewCellStyle1;
北京的雾霾天 2009-08-14
  • 打赏
  • 举报
回复
打开设计界面编辑DataGridView的每一个列样式,有一个DefaultCellStyle点开编辑窗口,找到NullValue设置一个字符串值就可以了。
dancingbit 2009-08-14
  • 打赏
  • 举报
回复
处理CellParsing和CellFormatting事件,在CellFormatting事件中可以将数据进行格式化,对应的,需要在CellParsing事件中将其解析回原来的形式。
simplePJlife 2009-08-14
  • 打赏
  • 举报
回复
if (DataGridView.ROWS[0][0].ToString() == "")
{
DataGridView.ROWS[0][0] = "null";
}

GridView列宽根据数据长度 自动变化很容易出问题。 一般做法 是 用SUBSTRING, 列宽固定, 数据长度截取一定长度控制起来。
dancingbit 2009-08-14
  • 打赏
  • 举报
回复
查了一下我以前的代码,发现少了一点:

if (ds.Tables.Count == 1)
{

//dv = new DataView();
dgv = new DataGrid();
//dv = ds.Tables[0].DefaultView;
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.AllowSorting = true;
dgts.MappingName=Data.TableName;
foreach (DataColumn col in ds.Tables[0].Columns)
{
DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
dgtbc.MappingName=col.ColumnName;
dgtbc.NullText = "NULL";
dgts.GridColumnStyles.Add(dgtbc);
}
dgv.DataSource = ds.Tables[0];
dgv.TableStyles.Add(dgts);


看看现在这个怎么样。
cherho0 2009-08-14
  • 打赏
  • 举报
回复
再弄不好老板要炒我来,这点细节2天了我晕
cherho0 2009-08-14
  • 打赏
  • 举报
回复
if (ds.Tables.Count == 1)
{

//dv = new DataView();
dgv = new DataGrid();
//dv = ds.Tables[0].DefaultView;
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.AllowSorting = true;
foreach (DataColumn col in ds.Tables[0].Columns)
{
DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
dgtbc.NullText = "NULL";
dgts.GridColumnStyles.Add(dgtbc);
}
dgv.TableStyles.Add(dgts);

dgv.DataSource = ds.Tables[0];
cherho0 2009-08-14
  • 打赏
  • 举报
回复
没有效果歪,我晕了
dancingbit 2009-08-14
  • 打赏
  • 举报
回复
粗心了,你这里还有一个问题:

if (ds.Tables.Count == 1)
{

//dv = new DataView();
dgv = new DataGrid();
//dv = ds.Tables[0].DefaultView;
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.AllowSorting = true;
foreach (DataRow row in ds.Tables[0].Columns)
{
DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
dgtbc.NullText = "NULL";
dgts.GridColumnStyles.Add(dgtbc);
}
dgv.TableStyles.Add(dgts);
dgv.DataSource = ds.Tables[0];
//dv.ApplyDefaultSort = true;
//dgv.DataSource = dv;
dgv.AllowNavigation = true;
dgv.Size = new Size(1000, 150);
dgv.CaptionVisible = false;
dgv.Font = new Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dgv.ReadOnly = true;
dgv.Dock = DockStyle.Fill;
dgv.BorderStyle = BorderStyle.FixedSingle;
dgv.GridLineColor = Color.WhiteSmoke;
dgv.Padding = new Padding(1);
dgv.ForeColor = Color.Black;
dgv.SelectionBackColor = Color.PowderBlue;
dgv.SelectionForeColor = Color.Black;
//dgv.CellBorderStyle = DataGridViewCellBorderStyle.Raised;
plList.Controls.Add(dgv);
//tabTable.Controls.Add(dgv);
}



应该是按照列而非行来处理的。
dancingbit 2009-08-14
  • 打赏
  • 举报
回复

if (ds.Tables.Count == 1)
{

//dv = new DataView();
dgv = new DataGrid();
//dv = ds.Tables[0].DefaultView;
DataGridTableStyle dgts = new DataGridTableStyle();
dgts.AllowSorting = true;
foreach (DataRow row in ds.Tables[0].Rows)
{
DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
dgtbc.NullText = "NULL";
dgts.GridColumnStyles.Add(dgtbc);
}
dgv.TableStyles.Add(dgts);
dgv.DataSource = ds.Tables[0];
//dv.ApplyDefaultSort = true;
//dgv.DataSource = dv;
dgv.AllowNavigation = true;
dgv.Size = new Size(1000, 150);
dgv.CaptionVisible = false;
dgv.Font = new Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dgv.ReadOnly = true;
dgv.Dock = DockStyle.Fill;
dgv.BorderStyle = BorderStyle.FixedSingle;
dgv.GridLineColor = Color.WhiteSmoke;
dgv.Padding = new Padding(1);
dgv.ForeColor = Color.Black;
dgv.SelectionBackColor = Color.PowderBlue;
dgv.SelectionForeColor = Color.Black;
//dgv.CellBorderStyle = DataGridViewCellBorderStyle.Raised;
plList.Controls.Add(dgv);
//tabTable.Controls.Add(dgv);
}


看看效果如何。
dancingbit 2009-08-14
  • 打赏
  • 举报
回复
dgts.GridColumnStyles.Clear();
-----------------------------
不知道你放这一句是干什么?除了最后一列,前面所有的定义都没了。

dgts.AllowSorting = true;
--------------------------
这个放在循环外,执行一次就够了。
cherho0 2009-08-14
  • 打赏
  • 举报
回复

if (ds.Tables.Count == 1)
{

//dv = new DataView();
dgv = new DataGrid();
//dv = ds.Tables[0].DefaultView;
DataGridTableStyle dgts = new DataGridTableStyle();
foreach (DataRow row in ds.Tables[0].Rows)
{
DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
dgtbc.NullText = "NULL";
dgts.GridColumnStyles.Clear();
dgts.AllowSorting = true;
dgts.GridColumnStyles.Add(dgtbc);
}
dgv.TableStyles.Add(dgts);
dgv.DataSource = ds.Tables[0];
//dv.ApplyDefaultSort = true;
//dgv.DataSource = dv;
dgv.AllowNavigation = true;
dgv.Size = new Size(1000, 150);
dgv.CaptionVisible = false;
dgv.Font = new Font("Courier New", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dgv.ReadOnly = true;
dgv.Dock = DockStyle.Fill;
dgv.BorderStyle = BorderStyle.FixedSingle;
dgv.GridLineColor = Color.WhiteSmoke;
dgv.Padding = new Padding(1);
dgv.ForeColor = Color.Black;
dgv.SelectionBackColor = Color.PowderBlue;
dgv.SelectionForeColor = Color.Black;
//dgv.CellBorderStyle = DataGridViewCellBorderStyle.Raised;
plList.Controls.Add(dgv);
//tabTable.Controls.Add(dgv);
}
cherho0 2009-08-14
  • 打赏
  • 举报
回复
可是还是不行啊
我的代码
if (ds.Tables.Count == 1)
{

//dv = new DataView();
dgv = new DataGrid();
//dv = ds.Tables[0].DefaultView;
DataGridTableStyle dgts = new DataGridTableStyle();
foreach (DataRow row in ds.Tables[0].Rows)
{
DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
dgtbc.NullText = "NULL";
dgts.GridColumnStyles.Clear();
dgts.AllowSorting = true;
dgts.GridColumnStyles.Add(dgtbc);
}
dgv.TableStyles.Add(dgts);
dgv.DataSource = ds.Tables[0];
dancingbit 2009-08-14
  • 打赏
  • 举报
回复
http://topic.csdn.net/u/20080323/17/da5c1a23-d59d-4351-90cd-e3455d5d0f27.html?seed=1414199242

上面的链接中有点我写的代码,注意循环中设置dgtbc.NullText=...。

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧