原始样例:
DataTable dt = new DataTable();//创建DataTable对象
sda.Fill(dt);//填充DataTable
DataView dv = dt.DefaultView;
dataGridView1.DataSource = dv;
//列宽1,需统一所有带金额、税额、价税的列宽为120
this.dataGridView1.Columns["不含税金额"].Width = this.dataGridView1.Columns["不含税金额本位币"].Width = 120;
this.dataGridView1.Columns["价税合计"].Width = this.dataGridView1.Columns["价税合计本位币"].Width = 120;
this.dataGridView1.Columns["应付金额"].Width = 120;
this.dataGridView1.Columns["付款申请金额"].Width = 120;
//列宽2,需统一所有列名带制表符内容的列宽为30
第一个把列名放到数组里,循环处理即可,第二个遍历列,名称如果满足条件就设置。
可以交给用户配置,初始列宽保存到基础表,用户的调整后保存到用户配置表,显示时读取配置来设置
foreach批处理语句
var dgv = new DataGridView();
foreach(DataGridViewColumn col in dgv.Columns)
{
if (col.Name.Contains("Something"))
{
col.Width = 111;
}
}
string[] SomeCols = new string[] { "A","B","C"};
foreach(string columnName in SomeCols)
{
dgv.Columns[columnName].Width = 111;
}
我想直接套用,结果出错。
[/
var dgv = new DataGridView();
foreach (DataGridViewColumn col in dgv.Columns)
{
if (col.Name.Contains("金额"))
{
col.Width = 200;
}
}
string[] SomeCols = new string[] { "税额", "价税", "差额" };
foreach (string columnName in SomeCols)
{
dgv.Columns[columnName].Width = 200;
}code]
<fieldset><legend class="font_bold">引用 4 楼 Hello World, 的回复:</legend><blockquote>大概这样:
[code=csharp] var dgv = new DataGridView();
foreach(DataGridViewColumn col in dgv.Columns)
{
if (col.Name.Contains("Something"))
{
col.Width = 111;
}
}
string[] SomeCols = new string[] { "A","B","C"};
foreach(string columnName in SomeCols)
{
dgv.Columns[columnName].Width = 111;
}
</blockquote></fieldset>
我想直接套用
[code=csharp][/ var dgv = new DataGridView();
foreach (DataGridViewColumn col in dgv.Columns)
{
if (col.Name.Contains("金额"))
{
col.Width = 200;
}
}
string[] SomeCols = new string[] { "税额", "价税", "差额" };
foreach (string columnName in SomeCols)
{
dgv.Columns[columnName].Width = 200;
}code]
结果报错了,第一部分的第一行若去掉,再把dgv替换成DataGridView1能成功,但第二部分仍是出错。
要换成你的datagridview控件,并且控件的列要正确,不然找不到那一列就不能设置宽度了
找出问题了,列名必须要完全一样,不能模糊值匹配
string[] SomeCols = new string[] { "不含税金额","税额","价税合计本位币" };
foreach (string columnName in SomeCols)
{
dataGridView1.Columns[columnName].Width = 200;
}
我这边数据表列名称带“金额”、“税额”、“价税”关键字的比较多,想用Contains来模糊匹配一下?能否再小蜜蜂论坛发帖机指导一下?谢谢!