ASP.NET Gridview控件添加和删除行(不涉及数据库)

闲人请绕道,谢谢。偶搞了很久了,也搞不出来。网上有很多,杂乱无章,而且自己试了很多,一个都没得,照着书本做,也还出错。下面是书本上模仿来的,思想是建立个DataTable... 闲人请绕道,谢谢。
偶搞了很久了,也搞不出来。网上有很多,杂乱无章,而且自己试了很多,一个都没得,照着书本做,也还出错。
下面是书本上模仿来的,思想是建立个DataTable,然后将加入Gridview的数据先放入DataTable中,然后绑定,删除的时候是先删除DataTable中对应的行,然后重新绑定。
我只是需要一个能实现如题所述的方法,而并不一定是下面的这种。甚至,我只是需要一个把输入的多组信息用表格或列表的方式展示出来的方法。如果您有其他好方法的话。
namespace WebApplication2.administrator
{
public partial class WebForm3 : System.Web.UI.Page
{
public static DataTable Cpdt;
protected void Page_Load(object sender, EventArgs e)
{
Createbt();
if (!IsPostBack)
{
GridView1.DataSource = Cpdt;
GridView1.DataBind();
}
}
void Createbt()
{
Cpdt = new DataTable();
DataColumn mycol = new DataColumn();
Cpdt.Columns.Add(new DataColumn("CPID",typeof(Int32)));
Cpdt.Columns.Add(new DataColumn("CPNAME",typeof(String)));
Cpdt.Columns.Add(new DataColumn("CPDJ", typeof(Single)));
Cpdt.Columns.Add(new DataColumn("SL", typeof(Int32)));
Cpdt.Columns.Add(new DataColumn("CPSUM", typeof(Double)));
Cpdt.AcceptChanges();
Cpdt.PrimaryKey = new DataColumn[] { Cpdt.Columns[1] };
Cpdt.AcceptChanges();
}
protected void Button1_Click(object sender, EventArgs e)
{
DataRow myrow = Cpdt.NewRow();
myrow[0] = TextBox1.Text;
myrow[1] = TextBox2.Text;
myrow[2] =Convert.ToSingle(TextBox3.Text);
myrow[3] = TextBox4.Text;
Cpdt.Rows.Add(myrow);
var mm=Cpdt.AsEnumerable().Sum(p=>Convert.ToDouble( p["SL"]));
Label3.Text = mm.ToString();
Cpdt.AcceptChanges();
GridView1.DataSource = Cpdt;
GridView1.DataBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
int rowkey = e.RowIndex;
Cpdt.Rows.RemoveAt(rowkey);
Cpdt.AcceptChanges();
GridView1.EditIndex = -1;
GridView1.DataSource = Cpdt;
GridView1.DataBind();
}
}
}
上面的运行以后,添加行只能添加一行,一行以后变成更新数据了。删除的时候出错,说在位置0处没有任何行。
展开
 我来答
测试名称测试名称测试名称测试名称测试名称
2012-03-06 · TA获得超过2935个赞
知道小有建树答主
回答量:172
采纳率:0%
帮助的人:179万
展开全部
public static DataTable Cpdt;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Cpdt = new DataTable();
Createbt();
GridView1.DataSource = Cpdt;
GridView1.DataBind();
}
}

void Createbt()
{
DataColumn mycol = new DataColumn();
Cpdt.Columns.Add(new DataColumn("CPID", typeof(Int32)));
Cpdt.Columns.Add(new DataColumn("CPNAME", typeof(String)));
Cpdt.Columns.Add(new DataColumn("CPDJ", typeof(Single)));
Cpdt.Columns.Add(new DataColumn("SL", typeof(Int32)));
Cpdt.Columns.Add(new DataColumn("CPSUM", typeof(Double)));
Cpdt.AcceptChanges();
Cpdt.PrimaryKey = new DataColumn[] { Cpdt.Columns[0] };
Cpdt.AcceptChanges();
}

protected void Button1_Click(object sender, EventArgs e)
{
DataRow myrow = Cpdt.NewRow();
if (Cpdt.Rows.Count==0)
{
myrow[0] = 1;
}
else
{
myrow[0] = int.Parse(Cpdt.Rows[Cpdt.Rows.Count-1][0].ToString()) + 1;
}
myrow[1] = 2;
myrow[2] = 3;
myrow[3] = 4;
Cpdt.Rows.Add(myrow);
var mm = Cpdt.AsEnumerable().Sum(p => Convert.ToDouble(p["SL"]));
//Label3.Text = mm.ToString();
Cpdt.AcceptChanges();
GridView1.DataSource = Cpdt;
GridView1.DataBind();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
解忧解忧杂货铺
2012-03-06 · TA获得超过590个赞
知道小有建树答主
回答量:1536
采纳率:33%
帮助的人:696万
展开全部
你不要定义静态的table ,用缓存吧。。viewstate应该就可以。每次执行添加就往缓存里面记录数据,也就是table的add row 。再重新绑定GridView.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
菜鸟_船长
2012-03-06
知道答主
回答量:24
采纳率:0%
帮助的人:12.2万
展开全部
遇到问题的时候首先想到的debugger调试一下,看看哪里出错了,报的什么错
实在不行在发问,下次发问的时候去一些专业性的论坛,发问效果会好点
给你推荐一个GRIDVIEW的实例吧,GridView72变,楼主可以搜一下!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式