PDA

View Full Version : سوال: ذخیره چندین رکوردانتخابی از گرید در حافظه و استفاده از آنها در صفحه دیگر



starland
چهارشنبه 27 شهریور 1392, 15:24 عصر
سلام
من در سایت فروشگاهم چندین رکورد محصول را در گرید نمایش دادم که با انتخاب هر رکورد به سبد خرید اضافه می شود اما وقتی می خواهم در صفحه نتایج خریدها را نمایش بدهم تنها یک رکورد وجود دارد. در تابع GridView_RowCommand ای دی آن ردیف گرفته و سرویس صدا زده می شود که در سرویس هم متد زیر را نوشتم
String key = "GetFlowerById_" + f._flowerID;
FlowersShopDataSet.FlowerDataTable dataTable = HttpContext.Current.Cache["key"] as FlowersShopDataSet.FlowerDataTable;
if (dataTable == null)
{
dataTable = fta.GetDataByFlowerID(f._flowerID);
if (dataTable.Rows.Count > 0)
HttpContext.Current.Cache.Insert("key", dataTable, null, DateTime.Now.AddHours(6), TimeSpan.Zero);
}


اما در صفحه نتایج فقط یک ردیف دیتا در گرید نمایش داده می شود.

GridView1.DataSource = (FlowersShopDataSet.FlowerDataTable)Cache.Get("key ");
GridView1.DataBind();

fakhravari
چهارشنبه 27 شهریور 1392, 17:20 عصر
ذخیره چندین رکوردانتخابی از گرید = یک سری رشته است دیگه؟ خب بریز تو یک string[] بعد اینو بزار توی یک سشن

starland
چهارشنبه 27 شهریور 1392, 18:40 عصر
من توی متد GridView_RowCommand همین کاری که گفتید را انجام دادم id ها را گرفتم و درون array ریختم و آرایه را هم به سشن دادم تا هر بار id های قبلی از بین نره اما هر بار که این متد صدا زده می شود id های قبلی دیگه تو لیست وجود ندارد ....:ناراحت:

fakhravari
چهارشنبه 27 شهریور 1392, 23:39 عصر
نه دیگه تا زمانی که سشن هست اونم هست.

using System.Collections.Generic;
private static List<string> test = new List<string>();


// grid
// add items
test.Add("10");
test.Add("20");
test.Add("30");

// fill
Session["arryList"] = test;

// read
List<string> test = (List<string>)Session["arryList"];

بعد test با حلقه بخون

starland
پنج شنبه 28 شهریور 1392, 11:06 صبح
ممنونم از اینکه وقت می زارید برای پاسخ دادن من این کد را نوشتم اما ... نمی دونم مشکل کجاست :ناراحت:

protected void GridView_RowCommand(object sender, GridViewCommandEventArgs e)
{

if (e.CommandName == "AddToCart")
{
f.Flower_ID = Int32.Parse(e.CommandArgument.ToString());
listID.Add(f.Flower_ID);
}
Session["listID"] = listID;
}

می خوام هر بار که RowCommand زده می شه id اون ردیف محصول جایی ذخیره بشه تا در انتها با انتخاب گزینه پرداخت انتخابها نمایش داده بشه . نمی دونم چرا هر بار که متد RowCommand صدا زده میشه در گرید ویو همه چیز null :ناراحت: