简体   繁体   English

如何从gridview删除特定的行。使用gridview的内置删除命令按钮

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM