ASP.NET GridView行的添加删除不涉及数据库
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerServerErrorException: 在位置 0 处没有任何行。
以上是错误提示,下面是后台代码:
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();
// //Cpdt.Rows[e.RowIndex].Delete();
// //GridView1.DataSource = Cpdt;
// //GridView1.DataBind();
// //当前点击删除行的行号
}
}
把前台的也贴上来吧,这小问题困了我好久了,郁闷死。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="CPID"
onrowdeleting="GridView1_RowDeleting"
>
<Columns>
<asp:BoundField DataField="CPID" HeaderText="产品编号" ReadOnly="True"
SortExpression="CPID" />
<asp:BoundField DataField="CPNAME" HeaderText="产品名" ReadOnly="True"
SortExpression="CPNAME" />
<asp:BoundField DataField="CPDJ" HeaderText="产品单价" ReadOnly="True"
SortExpression="CPDJ" />
<asp:TemplateField HeaderText="数量" SortExpression="SL">
<FooterTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("SL") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("SL") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowSelectButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:ButtonField ButtonType="Button" CommandName="Delete" Text="按钮" />
</Columns>
</asp:GridView>
另外,无刷新控件已经放好了,这里就略了。
问题在于:按按钮添加的时候,就只是一行,不会增加,如果修改输入数据,那等于更新数据而已。但是我注意到了DataRow myrow = Cpdt.NewRow();
之类的语句,应该是新增的啊,不知道为什么。
删除的时候,提取选中的行,然后删除对应的数据源行,然后就重新绑定,我不知道我还能做什么。
以上是错误提示,下面是后台代码:
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();
// //Cpdt.Rows[e.RowIndex].Delete();
// //GridView1.DataSource = Cpdt;
// //GridView1.DataBind();
// //当前点击删除行的行号
}
}
把前台的也贴上来吧,这小问题困了我好久了,郁闷死。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="CPID"
onrowdeleting="GridView1_RowDeleting"
>
<Columns>
<asp:BoundField DataField="CPID" HeaderText="产品编号" ReadOnly="True"
SortExpression="CPID" />
<asp:BoundField DataField="CPNAME" HeaderText="产品名" ReadOnly="True"
SortExpression="CPNAME" />
<asp:BoundField DataField="CPDJ" HeaderText="产品单价" ReadOnly="True"
SortExpression="CPDJ" />
<asp:TemplateField HeaderText="数量" SortExpression="SL">
<FooterTemplate>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("SL") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("SL") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowSelectButton="True" />
<asp:CommandField ShowDeleteButton="True" />
<asp:ButtonField ButtonType="Button" CommandName="Delete" Text="按钮" />
</Columns>
</asp:GridView>
另外,无刷新控件已经放好了,这里就略了。
问题在于:按按钮添加的时候,就只是一行,不会增加,如果修改输入数据,那等于更新数据而已。但是我注意到了DataRow myrow = Cpdt.NewRow();
之类的语句,应该是新增的啊,不知道为什么。
删除的时候,提取选中的行,然后删除对应的数据源行,然后就重新绑定,我不知道我还能做什么。
...全文
相关推荐
ASP.NET和ADO.NET数据库开发技术.doc
- **DataRow**:表示DataTable中的行,包含了特定行的所有值。在ASP.NET中,可以使用控件如GridView和DataList来显示和操作DataSet中的数据。
ASP.NET中为GridView添加删除提示框的方法
在ASP.NET开发中,GridView控件是用于展示数据表格的常用组件。为了提供更好的用户体验,尤其是在涉及删除操作时,通常需要添加删除提示框以避免意外的、不可逆的数据丢失。
ASP.NET—002:GridView手动增加一行
在ASP.NET开发中,GridView控件是用于展示数据的强大工具,它可以轻松地将数据库中的数据绑定到网页上,实现数据的列表展示、编辑、删除等操作。
Asp.net Mvc GridView
在ASP.NET MVC框架下,虽然不像ASP.NET Web Forms那样内置了GridView控件,但开发者可以通过自定义或者使用第三方库来实现类似的功能。
asp.net 不用GridView自带删除功能,删除一行数据
在ASP.NET中,开发Web应用程序时,我们常常需要展示数据并提供用户交互,例如删除操作。GridView控件是一个常用的用于显示数据集的控件,它提供了内置的功能,如添加、编辑和删除行。


