为了账号安全,请及时绑定邮箱和手机立即绑定

表单字段在没有数据库的情况下填充网格视图

表单字段在没有数据库的情况下填充网格视图

C#
ibeautiful 2023-12-17 10:20:46
我需要构建一个函数来动态地将行从表单对象(例如下拉列表和文本字段)添加到网格视图。我需要在不接触数据库的情况下执行此操作。我需要让用户能够一次添加多行。 这是我到目前为止所想出的。 我在 if 上得到一个空引用    var dt = new DataTable();    dt = GridView1.DataSource as DataTable;    if (dt.Columns.Count == 0)    {        dt.Columns.Add("Field");        dt.Columns.Add("Value");    }    DataRow dr = dt.NewRow();    dr["Field"] = DropDownList1.SelectedValue;    dr["Value"] = TextBox2.Text.Trim();    dt.Rows.Add(dr);    GridView1.DataSource = dt;    GridView1.DataBind();
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

我不确定你的想法


var dt = new DataTable();

dt = GridView1.DataSource as DataTable;

正在执行,但它正在将 null 分配给 dt (因为 GridView1.DataSource 为 null)


尝试:


var dt = GridView1.DataSource as DataTable;

if (dt == null) 

{

    dt = new DataTable();

    GridView1.DataSource = dt;

}

以后,当您遇到空引用错误时,请添加一个断点并检查该行中每个变量的值以查看哪个变量为空。


查看完整回答
反对 回复 2023-12-17
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

尝试使用ViewState变量而不是拉取数据源。行中可能会有奇怪的事情......


设置视图状态.DataBind():ViewState["GV1_DT"] = dt;


Pull var dt = ViewState["GV1_DT"] as DataTable; 然后您可以通过执行以下操作合并 null 检查:var dt = (ViewState["GV1_DT"] as DataTable) ?? new DataTable();


完整代码:


    var dt = (ViewState["GV1_DT"] as DataTable) ?? new DataTable(); // -- PULL


    if (dt.Columns.Count == 0)

    {

        dt.Columns.Add("Field");

        dt.Columns.Add("Value");

    }


    DataRow dr = dt.NewRow();

    dr["Field"] = DropDownList1.SelectedValue;

    dr["Value"] = TextBox2.Text.Trim();


    dt.Rows.Add(dr);


    ViewState["GV1_DT"] = dt;    // -- SET

    GridView1.DataSource = dt;

    GridView1.DataBind();


查看完整回答
反对 回复 2023-12-17
  • 2 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信