您好,我将数据从文本框添加到我的gridview本地而不是从数据库。它就像销售人员销售产品的销售页面。现在我想从该gridview中删除一行,但在删除时我总是得到异常。请帮助我。这里是我的代码,我得到的数据和存储在gridview中。谢谢。如何从gridview中删除特定的行。使用gridview的内置删除命令按钮
DataTable dt1 = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
gridVIEWData();
GridView1.DataSource = dt1;
GridView1.DataBind();
}
private void gridVIEWData()
{
dt1.Columns.Add("pName", typeof(string));
dt1.Columns.Add("pCategory", typeof(string));
dt1.Columns.Add("price", typeof(string));
dt1.Columns.Add("pQuantity", typeof(string));
dt1.Columns.Add("totalPrice", typeof(string));
Session["dtInSession"] = dt1; //Saving Datatable To Session
}
protected void Button3_Click(object sender, EventArgs e)
{
if (Session["dtInSession"] != null)
dt1 = (DataTable)Session["dtInSession"]; //Getting datatable from session
Int32 total = Convert.ToInt32(txt_quantity.Text) * Convert.ToInt32(txt_price.Text);
DataRow dr = dt1.NewRow();
dr["pName"] = DropDownList2.SelectedItem;
dr["pCategory"] = DropDownList1.SelectedItem;
dr["price"] = txt_price.Text;
dr["pQuantity"] = txt_quantity.Text;
dr["totalPrice"] = total;
dt1.Rows.Add(dr);
Session["dtInSession"] = dt1; //Saving Datatable To Session
GridView1.DataSource = dt1;
GridView1.DataBind();
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
// string value = GridView1.DataKeys[e.RowIndex].Values["price"].ToString();
//GridView1.DeleteRow(Convert.ToInt32(value));
//GridView1.DeleteRow(GridView1.SelectedIndex);
// dt1.Rows.RemoveAt(GridView1.SelectedIndex);
Int32 index = GridView1.SelectedIndex;
GridView1.DeleteRow(index);
}
m仍然出现错误“位置-1没有行” –
您必须使用DataKeyNames =“pName”[pName]应该是唯一的。 –