.net 是否在没有源的情况下生成DataGridView表?

.net 是否在没有源的情况下生成DataGridView表?,.net,c#-4.0,data-binding,datagridview,datasource,.net,C# 4.0,Data Binding,Datagridview,Datasource,我从来没有设法让DataGridView按我需要的方式工作,但我又回来了,希望我能把它弄明白。我目前有一个类,在这个类中,我存储了很多关于进入我们软件的每个支持票证的数据,但我只想在DataGridView上显示其中的一些数据 这个班看起来如下 public class Ticket { public string ID { get; set; } public string TicketID { get; set; } public string DeptID { ge

我从来没有设法让DataGridView按我需要的方式工作,但我又回来了,希望我能把它弄明白。我目前有一个类,在这个类中,我存储了很多关于进入我们软件的每个支持票证的数据,但我只想在DataGridView上显示其中的一些数据

这个班看起来如下

public class Ticket
{
    public string ID { get; set; }
    public string TicketID { get; set; }
    public string DeptID { get; set; }
    public string UserID { get; set; }
    public string Name { get; set; }
    public string Email { get; set; }
    public string CC { get; set; }
    public string Subject { get; set; }
    public string Message { get; set; }
    public string Status { get; set; }
    public string Priority { get; set; }
    public DateTime Date { get; set; }
    public DateTime LastResponse { get; set; }
    public IPAddress IP { get; set; }
}
我想构建一个表,显示Name/Message/Priority或这些值的一些组合,但肯定不是所有值。有没有什么方法可以让我从头开始构建表数据,而不必提供数据源

下面是实现下面建议的测试代码,但我得到“不能向DataGridView控件添加没有列的行”

WHMCS x=新的WHMCS();
列表票证=新列表();
票证=x.获得票证();
KryptonDataGridView dgv=新的KryptonDataGridView();
content1.Controls.Add(dgv);
foreach(票据中的var tix)
{
var objArr=新对象[]{tix.Priority,tix.Subject};
dgv.Rows.Add(objArr);
}

您可以手动添加行,方法是使用感兴趣的字段将票证类转换为对象数组,然后将数组添加到数据网格中。差不多

foreach(var ticket in AllTickets){
    var objArr = new object[]{ticket.Id, ticket.DeptId...};
    dataGrid.Rows.Add(objArr);
}
确保数组中的类型对应于每列所需的类型,如果用户可以编辑值,则还必须手动将值传播回数据源

针对你的评论: 在添加行之前,使用列填充dataGrid:

_colId = new DataGridViewTextBoxColumn
        {
           Name = "Id",
           HeaderText = Id.CreationDate,
           AutoSizeMode = DataGridViewAutoSizeColumnMode.None,
           Width = 150,
           ReadOnly = true,
        };
//...

dataGrid.Columns.Add(_colId);
dataGrid.Columns.Add( other columns... );

在每个列上使用您需要的任何属性。

如果您不使用数据源,我相信您必须首先显式添加列。正如您所知,在使用foreach循环之前,要显示的列有:

dgv.Columns.Add([Column Info]); 

此方法允许您在添加行信息时显式创建要添加到的列。

我完全按照建议进行了尝试,但出现错误“无法将没有列的行添加到DataGridView控件”。我用代码更新了我原来的帖子,但你知道如何解决这个问题吗?谢谢工作得很好!非常感谢。
dgv.Columns.Add([Column Info]);