#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();
}
}