[英]How to delete the specific row from gridview.Using builtin delete command button of gridview
hi i am adding data from textboxes to my gridview locally not from database. 嗨,我正在将文本框的数据添加到本地的gridview中,而不是数据库中。 its like a salepage where a salesman is saling a product.
就像推销员在推销产品的销售页面。 now i want to delete a row from that gridview but i always got exception while deleting.
现在我想从该网格视图中删除一行,但是删除时我总是异常。 kindly help me with that.
请帮助我。 here is my code where im getting the data and storing that in gridview.
这是我的代码,我在其中获取数据并将其存储在gridview中。 thanks.
谢谢。
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);
}
Just to align with your code, 只是为了与您的代码保持一致,
Method1 : 方法1:
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (Session["dtInSession"] != null)
dt1 = (DataTable)Session["dtInSession"];
Int32 index = GridView1.SelectedIndex;
dt1 = dt1.Rows[index].Delete();
dt1.AcceptChanges();
Session["dtInSession"] = dt1; //Saving Datatable To Session
GridView1.DataSource = dt1;
GridView1.DataBind();
}
Method 2: 方法2:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="pName" onselectedindexchanged="GridView1_SelectedIndexChanged">
and 和
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
string _pName = Convert.ToString(GridView1.SelectedDataKey.Value);
// Once you get the pName you can query from DataTable and Delete the row which the pName = _pName
// BindGrid and Store DataTable in session.
}
This may helps you. 这可能对您有帮助。
protected void gvDetails_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
if (ViewState["CurrentTable"] != null)
dt = (DataTable)ViewState["CurrentTable"];
if (dt.Rows.Count > 0)
{
int Index = Convert.ToInt32(gvDetails.DataKeys[e.RowIndex].Values["Pk"].ToString());
dt.Rows.Cast<DataRow>().Where(o => o.Field<Int32>("Pk").Equals(Index)).FirstOrDefault().Delete();
// dt.Rows.RemoveAt(Index-1);
gvDetails.DataSource = dt;
gvDetails.DataBind();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.