我从存储过程中获取数据,这可以在datagrid中显示,但是设置列宽度会不断抛出空异常:
dataGridView2.Columns[x].Width = 60;
Run Code Online (Sandbox Code Playgroud)
完整代码:
public void Populate_Data_Grid2_All()
{
string sqlQuery = "EXEC sp_CG_GMR_Select_Specific_Data";
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(sqlQuery, connection))
using (var adapter = new SqlDataAdapter(command))
{
connection.Open();
var myTable = new DataTable();
adapter.Fill(myTable);
dataGridView2.DataSource = myTable;
}
dataGridView2.Columns[0].Width = 60;
dataGridView2.Columns[0].ReadOnly = true;
dataGridView2.Columns[1].Width = 40;
dataGridView2.Columns[1].ReadOnly = true;
dataGridView2.Columns[2].Width = 50;
dataGridView2.Columns[2].ReadOnly = true;
dataGridView2.Columns[3].Width = 250;
dataGridView2.Columns[3].ReadOnly = true;
dataGridView2.Columns[4].Width = 100;
dataGridView2.Columns[4].ReadOnly = true;
dataGridView2.Columns[4].DefaultCellStyle.Format = "N2";
}
Run Code Online (Sandbox Code Playgroud)
设置ReadOnly和单元格样式不会抛出错误,但设置宽度会.此代码与我对程序中的另一个数据网格所做的完全相同,后者从不同的过程中引入了更多列.我正在尝试格式化的过程现在没有任何空白值或任何东西.
编辑: 为清楚起见,这里是其他数据网格执行相同的事情的代码完全正常.第二个数据网格也是第一个的副本,所以它的所有设置都是相同的(我也检查过以确保)
码:
public void Populate_Data_Grid1(string DataExists, string Scheme)
{
string NoCurrentPeriodData = "EXEC sp_CG_GMR_Scheme_Manual_Entry_Template @Scheme = '"+Scheme+"'";
string YesCurrentPeriodData = "EXEC sp_CG_GMR_Current_Period_Data @Scheme = '"+Scheme+"'";
string sqlQuery;
if(DataExists())
{
sqlQuery = YesCurrentPeriodData;
}
else
{
sqlQuery = NoCurrentPeriodData;
}
using (var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(sqlQuery, connection))
using (var adapter = new SqlDataAdapter(command))
{
connection.Open();
var myTable = new DataTable();
adapter.Fill(myTable);
dg_Data1.DataSource = myTable;
}
//--Data Grid Column Properties--\\
dg_Data1.Columns[0].Visible = false;
dg_Data1.Columns[2].Visible = false;
dg_Data1.Columns[4].Visible = false;
dg_Data1.Columns[6].Visible = false;
dg_Data1.Columns[1].Width = 60;
dg_Data1.Columns[1].ReadOnly = true;
dg_Data1.Columns[3].Width = 40;
dg_Data1.Columns[3].ReadOnly = true;
dg_Data1.Columns[5].Width = 50;
dg_Data1.Columns[5].ReadOnly = true;
dg_Data1.Columns[7].Width = 250;
dg_Data1.Columns[7].ReadOnly = true;
dg_Data1.Columns[8].Width = 100;
dg_Data1.Columns[8].DefaultCellStyle.Format = "N2";
//dg_Data1.Columns[8].DefaultCellStyle.Format = "D";
btn_SaveValues.Enabled = true;
}
Run Code Online (Sandbox Code Playgroud)
Pan*_*475 12
我遇到了这个确切的问题,偶然发现在设置Width之前设置列的AutoSizeMode的不显眼的解决方案.例:
dataGridView2.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
dataGridView2.Columns[0].Width = 60;
dataGridView2.Columns[0].ReadOnly = true;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1643 次 |
| 最近记录: |