繁体   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