1

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; }
}

名前/メッセージ/優先度またはこれらの値のいくつかの組み合わせを示すテーブルを作成したいのですが、すべてではありません。データソースを提供するのではなく、テーブルデータを最初から作成するだけの方法はありますか?

以下の提案を実装するテストコードを次に示しますが、「列のないDataGridViewコントロールに行を追加できません」というメッセージが表示されます。

                WHMCS x = new WHMCS();
                List<WHMCS.Ticket> Tickets = new List<WHMCS.Ticket>();
                Tickets = x.Get_Tickets();

                KryptonDataGridView dgv = new KryptonDataGridView();
                content1.Controls.Add(dgv);

                foreach (var tix in Tickets)
                {
                    var objArr = new object[] {tix.Priority, tix.Subject};
                    dgv.Rows.Add(objArr);
                }
4

2 に答える 2

2

関心のあるフィールドを使用してTicketクラスをオブジェクト配列に変換し、その配列をdataGridに追加することで、手動で行を追加できます。何かのようなもの

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... );

各列で必要なプロパティを使用します。

于 2013-03-21T07:42:54.037 に答える
1

データソースを使用していない場合は、最初に列を明示的に追加する必要があると思います。表示したい列がわかっているので、foreachループの前に次を使用します。

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

このメソッドを使用すると、行情報を追加するときに追加する列を明示的に作成できます。

于 2013-03-21T09:43:02.610 に答える