[英]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.