簡體   English   中英

如何在Datagrid C#WPF中動態行?

[英]How to rows dynamically in datagrid C# wpf?

我想將datagrid的行數設置為等於用戶在文本框中指定的行數。 表示如果我在文本框中輸入6,則應在datagrid中添加6行。 這就是我想要的。 我可能是錯的。 但是,將引發Null異常。 如何解決我的問題?

這是代碼:

          DataTable dt;
          DataRow dr;
        int rownumber=0;
        dt = new DataTable("emp2");
        DataColumn dc3 = new DataColumn("Wi", typeof(double));
        DataColumn dc4 = new DataColumn("Hi", typeof(double));

        rownumber = Int32.Parse(txtBexNumber.Text);
        dr[rownumber] = dt.NewRow();
        dt.Rows.Add(dr);
        dt.Columns.Add(dc3);
        dt.Columns.Add(dc4);

        datagrid1.ItemsSource = dt.DefaultView;

您正在創建一個DataTable,然后嘗試立即訪問該表中用戶指定的行,即使尚未添加任何行。

使用循環先添加行

for(int i = 0; i < rowNumber; i++)
{
    dr = dt.NewRow();
    dt.Rows.Add(dr);
}

附帶說明一下,使用WPF時,更容易使用對象的ObservableCollection而不是DataTables和DataRows。 數據比起嘗試使用DataRows和DataColumns更容易理解和使用。

var data = new ObservableCollection<MyObject>();

for (int i = 0; i < rowNumber; i++)
    data.Add(new MyObject() { Wi = 0, Hi = 0 });

dataGrid1.ItemsSource = data;

我想最好用

Int32.TryParse(txtBexNumber.Text, out rownumber);

(也許您會收到解析空字符串的錯誤?如果可能的話,請嘗試調試確切指向null指針異常的地方)

同時驗證是否

dr[rownumber] = dt.NewRow();

可以正常工作。 如果例如dr [10]不存在,則會出現異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM