我想通过一个按钮删除gridview中的多行,同时它在gridview中被删除,它也会被删除到我的数据库中
我可以在这里试用代码:
这是我的btn SAVE(它有INSERT和DELETE命令)
protected void btnSave_Click(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
string RefNo = GridView1.DataKeys[row.RowIndex].Values[1].ToString();
string ProductID = GridView1.Rows[row.RowIndex].Cells[1].Text;
//string ProductID = GridView1.DataKeys[row.RowIndex].Values[1].ToString();
string Name = GridView1.Rows[row.RowIndex].Cells[2].Text;
decimal Price = decimal.Parse(GridView1.Rows[row.RowIndex].Cells[3].Text);
int Quantity = int.Parse(GridView1.Rows[row.RowIndex].Cells[4].Text);
int Amount = int.Parse(GridView1.Rows[row.RowIndex].Cells[5].Text);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "INSERT INTO SODetails (SOID, ProductID, Name, Price, Quantity, Amount, RefNo) " +
"VALUES (@SOID, @ProductID, @Name, @Price, @Quantity, @Amount, @RefNo)";
cmd.Parameters.AddWithValue("@UserID", Session["userid"].ToString());
cmd.Parameters.Add("@SOID", SqlDbType.VarChar).Value = SOID.Text;
//cmd.Parameters.Add("@RefNo", SqlDbType.VarChar).Value = RefNo;
cmd.Parameters.Add("@ProductID", SqlDbType.VarChar).Value = ProductID.ToString();
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = Name.ToString();
cmd.Parameters.Add("@Price", SqlDbType.Decimal).Value = Price;
cmd.Parameters.Add("@Quantity", SqlDbType.Int).Value = Quantity;
cmd.Parameters.Add("@Amount", SqlDbType.Int).Value = Amount;
cmd.Parameters.Add("@RefNo", SqlDbType.VarChar).Value = RefNo;
cmd.ExecuteNonQuery();
//con.Close();
//con.Open();
cmd.CommandText = "DELETE FROM Orders";
//cmd.Parameters.Add("@RefNo", RefNo);
cmd.ExecuteNonQuery();
GridView1.EditIndex = -1;
GridView1.DataBind();
con.Close();
}
}
}
老实说,它删除了......只是一个记录
Look here for my image of Gridview
每当我在gridview中有2个或更多项目时出现错误,请说:
Index was out of range. Must be non-negative and less than the size of the collection.Parameter name: index
Line 245: {
Line 246:
Line 247: string RefNo = GridView1.DataKeys[row.RowIndex].Values[1].ToString();
这是我的ASP网:
<div class="col-lg-12" align="center">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="RefNo" DataSourceID="SO" Width="1000px" Height="200px"
AllowPaging="True" HorizontalAlign="Center">
<Columns>
<asp:BoundField DataField="RefNo" HeaderText="RefNo" InsertVisible="False"
ReadOnly="True" SortExpression="RefNo" />
<asp:BoundField DataField="ProductID" HeaderText="ProductID"
SortExpression="ProductID" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
<asp:BoundField DataField="Quantity" HeaderText="Quantity"
SortExpression="Quantity" />
<asp:BoundField DataField="Amount" HeaderText="Amount"
SortExpression="Amount" />
<asp:ButtonField ButtonType="Button" CommandName="Delete" HeaderText="Delete"
ShowHeader="True" Text="Delete" />
</Columns>
<HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:GridView>
<asp:SqlDataSource ID="SO" runat="server"
ConnectionString="<%$ ConnectionStrings:MyOwnMeatshopSO %>"
SelectCommand="SELECT Orders.RefNo, Orders.ProductID, Products.Name, Orders.Price, Orders.Quantity, Orders.Amount FROM Orders INNER JOIN Products ON Orders.ProductID = Products.ProductID">
</asp:SqlDataSource>
<div class="container">
<div class="pull-right col-lg-5">
<h4 />SUB TOTAL Php <asp:Literal ID="ltSubTotal" runat="server"> </asp:Literal>
<h4 />VAT (12%)
Php <asp:Literal ID="ltVAT" runat="server"></asp:Literal>
<h4 />TOTAL Php <asp:Literal ID="ltTotal" runat="server"></asp:Literal>
</div>
</div>
<div class="container">
<div class="pull-right col-lg-2">
<asp:Button ID="btnSave" runat="server" class="btn btn" Text="Save"
style="color:White" BackColor="Black" onclick="btnSave_Click"/>
</div>
</div>
当我包含DELETE命令时,就会发生错误。 它似乎无法从我的GRIDVIEW&amp;中删除多条记录。数据库。 并且看起来我的代码不完整。
但是它再次只删除一条记录并显示错误