读书人

Gridview增加新行的有关问题

发布时间: 2013-09-05 16:02:06 作者: rapoo

Gridview增加新行的问题
我在Girdview的FooterTemplete里放置了一个LinkButton作为AddNew按钮,按钮事件为AddNew_Click()
,想在点击这个按钮时Girdview自动增加一行新行,这个新行要在Add按钮所在行之上,该行里面的内容为激活的空白textbox,等待用户输入内容。原表里只有两个字段,一个是id(整型自增1),另一个是name,Girdview我做了四列,第一列是Girdview的序号,第二列是表里的id,第三列是表里的name,第四列放置编辑和修改的LinkButton。用户在点击了FooterTemplete里的AddNew按钮后,Girdview自动增加一行新行,name那里变为文本框(txtRoleName)等待用户输入。
现在程序运行时出错了,在红色断点的那句报错,提示:未将对象引用设置到对象的实例。
请教下各位,谁有相同的案例程序,发给我参考一下,谢谢。


protected void AddNew_Click(object sender,EventArgs e)
{
DataTable dt=this.GetDataFromGrid();
DataRow newRow=dt.NewRow();
dt.Rows.Add(newRow);
this.gvRoleInfo.DataSource=dt;
this.gvRoleInfo.DataBind();
}

protected DataTable GetDataFromGrid()
{
DataTable dt1=new DataTable("tb01");
dt1.columns.Add("id");
dt1.columns.Add("name");
for(int i=0;i<gvRoleInfo.Rows.Count;i++)
{
GridViewRow gRow=gvRoleInfo.Rows[i];
DataRow newRow=dt1.NewRow();
newRow[0]=gvRoleInfo.DataKeys[i].Value;
newRow[1]=((TextBox)gRow.FindControl("txtRoleName")).Text; dt1.Rows.Add(newRow);
}
dt1.AcceptChanges();
return dt1;
}

[解决办法]
参考这个:
http://www.cnblogs.com/insus/p/3249508.html
http://www.cnblogs.com/insus/p/3247935.html
[解决办法]
未将对象引用设置到对象的实例


null reference
空引用错误,调试一下不就知道了
[解决办法]
for(int i=0;i<gvRoleInfo.Rows.Count;i++)
{
if(gvRoleInfo.Rows[i].RowType == DataControlRowType.DataRow)
{
GridViewRow gRow=gvRoleInfo.Rows[i];
DataRow newRow=dt1.NewRow();
newRow[0]=gvRoleInfo.DataKeys[i].Value;
newRow[1]= ((TextBox)gRow.FindControl("txtRoleName")).Text;
dt1.Rows.Add(newRow);
}
}

别忘了gridview还有Header和Footer
[解决办法]
这个新行要在Add按钮所在行之上
要达到这个目的,你需要知道RowIndex,可以用Button的OnCommand+GridView1_RowCommand传参处理
不过直接将新行放到Footer里会更容易处理
[解决办法]
sorry,gvRoleInfo.Rows已经是数据行的集合,不需要过滤

[解决办法]
赋值完成

直接追加就ok

 DataTable showDT = new DataTable();
showDT.Columns.Add("depName", typeof(string));
showDT.Columns.Add("total", typeof(string));
showDT.Columns.Add("multicolor", typeof(string));
showDT.Columns.Add("colorCost", typeof(string));
showDT.Columns.Add("bw", typeof(string));
showDT.Columns.Add("bwCost", typeof(double));
...........................................
showDT.Rows.Add("总计", sumTotal, summulticolor, sumbw, ColGross, BwGross);
GridView1.DataSource = showDT;


GridView1.DataBind();


[解决办法]
Like this?
http://www.cnblogs.com/insus/p/3269908.html

读书人网 >asp.net

热点推荐