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