C# 动态添加列时,DataGridViewColumn标题文本未显示或消失
代码:C# 动态添加列时,DataGridViewColumn标题文本未显示或消失,c#,winforms,C#,Winforms,代码: private void Do_FillGrid() { DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1); Data_Grid1.ColumnCount = 5; Data_Grid1.ColumnHeadersVisible = true; try { Cols.Add("Col_xID", "p_ID");
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
是否有任何原因或我在上面所做的任何事情导致我的列标题无法显示?您是否尝试过在InitializeComponent方法/设计器代码中的控件上设置ColumnHeadersVisible=true
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.ColumnHeadersVisible = true;
如果这不起作用,请在创建行并将ColumnHeadersVisible属性设置为true后尝试刷新控件
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.Refresh();
您是否尝试过在InitializeComponent方法/设计器代码中的控件上设置ColumnHeadersVisible=true
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.ColumnHeadersVisible = true;
如果这不起作用,请在创建行并将ColumnHeadersVisible属性设置为true后尝试刷新控件
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.Refresh();
可以通过以下方式设置柱头:
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.ColumnHeadersVisible = true;
Data_Grid1.ColumnCount = 5;
Data_Grid1.Columns[0].HeaderText = "p_ID";
Data_Grid1.Columns[1].HeaderText = "p_Unit";
Data_Grid1.Columns[2].HeaderText = "p_Date";
Data_Grid1.Columns[3].HeaderText = "p_Value";
Data_Grid1.Columns[4].HeaderText = "p_Status";
可以通过以下方式设置柱头:
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.ColumnHeadersVisible = true;
Data_Grid1.ColumnCount = 5;
Data_Grid1.Columns[0].HeaderText = "p_ID";
Data_Grid1.Columns[1].HeaderText = "p_Unit";
Data_Grid1.Columns[2].HeaderText = "p_Date";
Data_Grid1.Columns[3].HeaderText = "p_Value";
Data_Grid1.Columns[4].HeaderText = "p_Status";
这不是向网格中添加柱的方法。在代码中,将列添加到网格的命令是:
Data\u Grid1.ColumnCount=5代码>和位于try/catch
块中的代码只生成异常,不会执行
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
要将列添加到轴网,可以使用:
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
this.dataGridView1.Columns.Add("columnName", "headerText")
您还应该知道,您可以将列表设置为网格的DataSource
:
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
this.dataGridView1.AutoGenerateColumns = true;
this.dataGridView1.DataSource= myList;
这样,您不需要逐个添加行或列。这不是将列添加到网格的方法。在代码中,将列添加到网格的命令是:Data\u Grid1.ColumnCount=5代码>和位于try/catch
块中的代码只生成异常,不会执行
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
要将列添加到轴网,可以使用:
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
this.dataGridView1.Columns.Add("columnName", "headerText")
您还应该知道,您可以将列表设置为网格的DataSource
:
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
this.dataGridView1.AutoGenerateColumns = true;
this.dataGridView1.DataSource= myList;
这样,您就不需要逐个添加行或列。不确定为什么要使用DatagridViewColumnCollection
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
试试这个吧
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.Columns.Add("Col_xID", "p_ID");
...
不确定为什么要使用DatagridViewColumnCollection
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
试试这个吧
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
Data_Grid1.Columns.Add("Col_xID", "p_ID");
...
谢谢你们。我重新整理了一下代码。现在没事了-->
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
谢谢大家。我重新整理了一下代码。现在没事了-->
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
我们又来了。使用如您所说的Reza,我应用Linq选择要输出的字段
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
using System.Linq;
private void Do_FillGrid() {
var objSelectedFields = myTags.Select(tag => new { id = tag._id, unit = tag._unit, date = tag._date, val = tag._valStr, stat = tag._status }).ToList();
this.Data_Grid1.AutoGenerateColumns = true;
this.Data_Grid1.DataSource = objSelectedFields;
}
我们又来了。使用如您所说的Reza,我应用Linq选择要输出的字段
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}
using System.Linq;
private void Do_FillGrid() {
var objSelectedFields = myTags.Select(tag => new { id = tag._id, unit = tag._unit, date = tag._date, val = tag._valStr, stat = tag._status }).ToList();
this.Data_Grid1.AutoGenerateColumns = true;
this.Data_Grid1.DataSource = objSelectedFields;
}
在代码中,将列添加到网格的命令是:Data\u Grid1.ColumnCount=5代码>和try/catch块中的代码只生成异常,不会执行。在代码中,向网格添加列的命令是:Data\u Grid1.ColumnCount=5代码>和try/catch块中的代码只生成异常,不会执行。KonB,thks,更好的方法是将指向集合的指针存储在变量中。当我试图简化你的答案时,请看下面我的答案。没问题,只是用我所拥有的写出来。对我来说,最有可能的情况是雷扎在底部写道的。创建一个外部结构、一个列表或其他东西,并通过datasource将其动态绑定到datagrid。谢谢你!KonB,thks,更好的方法是将指向集合的指针存储在变量中。当我试图简化你的答案时,请看下面我的答案。没问题,只是用我所拥有的写出来。对我来说,最有可能的情况是雷扎在底部写道的。创建一个外部结构、一个列表或其他东西,并通过datasource将其动态绑定到datagrid。谢谢你!伙计们,再见。我不能使用Data_Grid1.DataSource=MyTags的原因是我只需要MyTags中的几个字段,而不是所有字段。我不知道有什么快速的方法来解决这个问题。对不起,雷扎,我错了。我能做到,我用Linq。再次看到我上一次发布的答案。我不能使用Data_Grid1.DataSource=MyTags的原因是我只需要MyTags中的几个字段,而不是所有字段。我不知道有什么快速的方法来解决这个问题。对不起,雷扎,我错了。我能做到,我用Linq。请参阅我最后发布的答案。
private void Do_FillGrid() {
DataGridViewColumnCollection Cols = new DataGridViewColumnCollection(Data_Grid1);
Data_Grid1.ColumnCount = 5;
Data_Grid1.ColumnHeadersVisible = true;
try
{
Cols.Add("Col_xID", "p_ID");
Cols.Add("Col_Unit", "p_Unit");
Cols.Add("Col_Date", "p_Date");
Cols.Add("Col_ValStr", "p_Value");
Cols.Add("Col_Status", "p_Status");
}catch(Exception ex){
Console.WriteLine(ex.Message);
}
foreach (SimpleEdnaTag oneTag in MyTags)
{
Data_Grid1.Rows.Add(
oneTag._id, oneTag._Units, oneTag._PointDate, oneTag._PointValueString, oneTag._PointStatus);
}
}