无需数据库即可填充 gridview 的表单字段
Form fields to populate gridview without database
我需要构建一个函数,以将行从下拉列表和文本字段等表单对象动态添加到 gridview。
我需要在不接触数据库的情况下执行此操作。
我需要让用户能够一次添加多行。
到目前为止,这是我想出的。
我在 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();
我不确定你怎么想
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;
}
以后,当你遇到空引用错误时,添加断点并检查行中每个变量的值,看看哪个是空的。
尝试使用 ViewState
变量而不是拉取数据源。行可能有奇怪的东西......
设置 视图状态 .DataBind()
: ViewState["GV1_DT"] = dt;
使用 var dt = ViewState["GV1_DT"] as DataTable;
拉取 然后您可以通过执行以下操作合并您的空检查: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();
我需要构建一个函数,以将行从下拉列表和文本字段等表单对象动态添加到 gridview。
我需要在不接触数据库的情况下执行此操作。
我需要让用户能够一次添加多行。
到目前为止,这是我想出的。
我在 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();
我不确定你怎么想
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;
}
以后,当你遇到空引用错误时,添加断点并检查行中每个变量的值,看看哪个是空的。
尝试使用 ViewState
变量而不是拉取数据源。行可能有奇怪的东西......
设置 视图状态 .DataBind()
: ViewState["GV1_DT"] = dt;
使用 var dt = ViewState["GV1_DT"] as DataTable;
拉取 然后您可以通过执行以下操作合并您的空检查: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();