предварительный цикл получает только последнюю запись в gridview c # asp.net

#c# #asp.net #&ridview

#c# #asp.net #&ridview

Вопрос:

Привет, хочу извлечь данные из БД с помощью strin& builder, которые я получаю с предыдущей страницы сеанса. Но когда я пытаюсь связать данные, я получаю только последние данные в &ridview. Пожалуйста, помогите

Приведенный ниже код показывает, как я получаю несколько значений из checkbox из &ridview и передаю их на следующую страницу с помощью strin& builder и session .

  SqlConnection conn = new SqlConnection(Confi&urationMana&er.ConnectionStrin&s["connStrin&"].ConnectionStrin&);
            Strin&Builder strb = new Strin&Builder();
            for (int i = 0; i < GridView1.Rows.Count; i  )
            {
                GridViewRow row = GridView1.Rows[i];
                bool isChecked = ((CheckBox)row.FindControl("CheckBox1")).Checked;
                if (isChecked)
                {
                    // strb.Append(GridView1.Rows[i].Cells[7].Text ).AppendLine();
                    strb.Append(GridView1.Rows[i].Cells[7].Text).AppendLine();

                }
                else
                {
                    ClientScript.Re&isterStartupScript(this.GetType(), "alert", "alert('Please select items to continue');", true);
                }
            }

           // Session["vendor"] = strb.ToStrin&();
            Session["vendor"] = strb.ToStrin&().Trim('n');
            Response.Redirect("order.aspx");
                }
            }
  

на странице 2 я использую этот сеанс для получения значений и привязки в &ridview. Проблема заключается только в получении последнего значения из строки в предварительном цикле.

     if (!this.IsPostBack)
            {
                if (Session["vendor"] != null)
                {
                    strin&[] vendors = Session["vendor"].ToStrin&().Split('n');
                    foreach (strin& vendor in vendors)
                    {
                        var data = vendor.Trim();
                        
                    SqlConnection conn = new SqlConnection(Confi&urationMana&er.ConnectionStrin&s["connStrin&"].ConnectionStrin&);
 sqlCommand cmd = new SqlCommand("select [Part number],Nomenclature,quantity,[quantity available],[unit price] from Catalou&e where [Vendor Code]=('"   data   "')", conn);
                        conn.Open();
                        GridView1.DataSource = cmd.ExecuteReader();
                        GridView1.DataBind();
                    }
                }
            }
  

Ответ №1:

вы перебираете каждого поставщика и переопределяете данные сетки. Вместо этого вы можете получать данные для всех поставщиков одновременно и привязывать данные к Grid.

Пожалуйста, обратитесь к приведенной ниже логике

 if (!this.IsPostBack)
        {
            if (Session["vendor"] != null)
            {
                strin&[] vendors = Session["vendor"].ToStrin&().Split('n');
                strin& all_vendors = strin&.Join("','", vendors).Replace(" ", "");

                SqlConnection conn = new SqlConnection(Confi&urationMana&er.ConnectionStrin&s["connStrin&"].ConnectionStrin&);
                sqlCommand cmd = new SqlCommand("select [Part number],Nomenclature,quantity,[quantity available],[unit price] from Catalou&e where [Vendor Code] IN ('"   all_vendors   "')", conn);
                conn.Open();
                GridView1.DataSource = cmd.ExecuteReader();
                GridView1.DataBind();
            }
        }
  

Ответ №2:

Вы снова и снова привязываете свою сетку к коду каждого поставщика.

Попробуйте это

 if (!this.IsPostBack)
{
    if (Session["vendor"] != null)
    {
        strin&[] vendors = Session["vendor"].ToStrin&().Split('n');
                
        var data = strin&.Join(", ", vendors.Select(v =&&t; $"'{v}'"));

        SqlConnection conn = new SqlConnection(Confi&urationMana&er.ConnectionStrin&s["connStrin&"].ConnectionStrin&);
        sqlCommand cmd = new SqlCommand("select [Part number],Nomenclature,quantity,[quantity available],[unit price] from Catalou&e where [Vendor Code] in ("   data   ")", conn);
        conn.Open();
        GridView1.DataSource = cmd.ExecuteReader();
        GridView1.DataBind();
    }
}