![](/img/trans.png)
[英]how to delete a row from the gridview by using a button outside the gridview
[英]How to delete the specific row from gridview.Using builtin delete command button of 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);
}
只是为了与您的代码保持一致,
方法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();
}
方法2:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="pName" onselectedindexchanged="GridView1_SelectedIndexChanged">
和
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.
}
这可能对您有帮助。
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.