Member 10296662 Ответов: 2

Как Я Могу Избежать Повторяющихся Столбцов GridView В Данных, Когда Я Обновить Веб-Страницу


Привет,
Я создал веб-приложение для корзины покупок.Он работает хорошо, как и требовалось.Но проблема в том,что когда я добавляю товар в корзину на DataGridView.Since, строки GridView добавляются динамически.Когда я обновляю страницу корзины с DataGridView, она дублирует первую строку.Я погуглил еще немного, но ничего не нашел.

здесь я вставляю свой код, пожалуйста, разрешите, если у кого-то есть решение.
protected void LinkButton1_Click(object sender, EventArgs e)
   {
       Button btn = (Button)sender;
       string strId = btn.CommandArgument.ToString();
       DataSet ds = GetProductDetailById(int.Parse(strId));
       DataTable dt = null; ;
       if (Session["CartItems"] != null)   //if datatable exists
       {

           dt = (DataTable)Session["CartItems"];
       }
       else
       {
           dt = new DataTable();  //creating new datatable
           dt.Columns.Add("ProducDtltId");
           dt.Columns.Add("itemName");
           dt.Columns.Add("FileName");
           dt.Columns.Add("quantity");
           dt.Columns.Add("UnitPrice");
       }
       DataRow dr = dt.NewRow();
       dr["ProducDtltId"] = strId;
       dr["itemName"] = ds.Tables[0].Rows[0]["itemName"].ToString();
       dr["FileName"] = ds.Tables[0].Rows[0]["FileName"].ToString();
       dr["quantity"] = 1;
       dr["UnitPrice"] = ds.Tables[0].Rows[0]["UnitPrice"].ToString();

       dt.Rows.Add(dr);//adding new row & assigning new session & id
       Session["CartItems"] = dt;
       FillCartDetails();
      }
   }
   public void FillCartDetails()
   {
       if (Session["CartItems"] != null)
       {
           DataTable dt = (DataTable)Session["CartItems"];
           grdCartDetail.DataSource = dt;
           grdCartDetail.DataBind();
           SetFooter();
       }
   }

2 Ответов

Рейтинг:
2

Member 11027141

Protected void gv_GridView_RowDataBound(object sender, GridViewRowEventArgs e)

{

       if (e.Row.RowType == DataControlRowType.DataRow)
        {

            if (e.Row.DataItemIndex != 0)
            {
                foreach(GridViewRow row in gv_GridView.Rows)
                {
                    if (e.Row.Cells[5].Text == row.Cells[5].Text)
                    {
                        e.Row.Cells[5].ForeColor = (e.Row.Cells[5].Text != row.Cells[5].Text) ? Color.Green : Color.Red;
                        MessageBox3.ShowError("You have entered the same person twice, please delete the second entry.");
                    }
                }

            }

        }

}


Richard Deeming

Этот вопрос был задан, на него ответили и решили ДВА С ПОЛОВИНОЙ ГОДА НАЗАД.

Ваше "решение" не пытается ответить на вопрос. И ваш код НЕ БУДЕТ РАБОТАТЬ в Ан ASP.NET применение.

Рейтинг:
18

Maddy Mc

До
FillCartDetails();

Очистить GridView

Во-первых, обнулить источник данных:

this.dataGridView. DataSource = null;
Затем очистите ряды:

это.практическое руководство.Строк.Четкий();
Затем установите источник данных в новый список:

это.практическое руководство.Источник данных = это.GetNewValues();


Member 10296662

извините за опоздание....
но это работает так, как предлагается с некоторыми чагами ....

спасибо....сэр.