PDA

View Full Version : سوال: ارسال دسته ای از اطلاعات به صفحه ی دیگر



baran_mehr
چهارشنبه 25 دی 1387, 20:11 عصر
چطوري ميتونم دسته اي اطلاعات را که تعدادشون مشخص نيست رو به صفحه بعد بفرستم
فرض کنيد من يه ليست از اطلاعات رو داخل گريد ويو نمايش ميدم و کاربر کالاهاي مورد نظرش رو انتخاب ميکنه و بعد بايد به صفحه بعد بره و تو اون صفحه ليست اجناس انتخابيشو نمايش بده.
حالا من چطور ميتونم موارد تيک خورده گريد ويو رو به صفحه بعد منتقل کنم؟؟
چه راهي رو پيشنهاد ميکنيد

merlin_vista
چهارشنبه 25 دی 1387, 20:38 عصر
يه راه اينه :
آي دي سطرهاي انتخاب شده را به دست بياري و با يك جدا كننده مثلاً "," به هم ديگر متصل كني :

1,2,3,4,5,8,0,11,56حالا در صفحه نمايش محصولات انتخاب شده يكي يكي Id ها را با Split جدا كني و بريزي تو يه آرايه ، بعد Select را با توجه به آي دي ها به بانك ارسال كني .

baran_mehr
چهارشنبه 25 دی 1387, 21:18 عصر
خوب این یک روش برای فرستان دسته ای اطلاعات هست اما یه مشکلی توش هست اونم اینکه برای هر ایدی باید یک بار دستور Select انجام بشه و این کار تو جدول های بزرگتر شاید روش خوبی نباشه چون سرعت رو پایین میاره.شیوه ای سبک تر یا ساده تر سراغ ندارید؟

Behrouz_Rad
چهارشنبه 25 دی 1387, 21:27 عصر
نیاز به Select به ازای هر آی دی نیست. از IN در SQL Server استفاده کن.
البته در این حالت اگر از SP استفاده می کنی نمی تونی آرایه ای از آی دی ها رو به اون پاس بدی مگر اینکه:
1) کوئری رو به صورت رشته در SP ایجاد و با دستور exec اجرا کنی.
2) یک temp table ایجاد کنی و در حقیقت نوعی شبیه سازی آرایه رو در SQL Server انجام بدی تا بتونی به IN، مقادیر نامحدودی رو پاس بدی. لینک ذیل راهنمای خوبیه:
http://www.sommarskog.se/arrays-in-sql-2005.html

موفق باشید.

mh19842008
چهارشنبه 25 دی 1387, 21:30 عصر
برای اینکار میتونی از یک link button یا image button داخل گریویو بزاری بعد خصوصیت command name برابر select قرار بدی در رویداد select index changed گرید ویو آیدی کالا رو دریافت کنی
حالا میتونی داخل یک dataset یا session یا هر چیز دیگری ذخیره و در صفحه مقصد داخل گرید ویو مربوطه select کنی
موفق باشی

baran_mehr
چهارشنبه 25 دی 1387, 21:32 عصر
آیا نمیشه رکوردهایی از یک گرید ویو رو انتخاب کرد و به گرید ویوی دیگه ای که تو یک صفحه دیگه هست داد؟؟

baran_mehr
چهارشنبه 25 دی 1387, 21:38 عصر
ممنون اقای راد باید بخونمش فکر کنم جالبی باشه.
mh19842008 جان من میخوام به عنوان مثال یک ستون باشه متشکل از چک باکس ها که در نهایت ایدی چک باکس های تیک خورده به صفحه دیگر بره و اونجا هم نماید داده بشه

mh19842008
چهارشنبه 25 دی 1387, 21:45 عصر
شما میتونی در یک حلقه id سطر هایی که چک خورده را بدست بیاوری در رویداد کلیک یک button تمام آی دی ها رو بدست بیار ودر نهایت میتونی از روش های پیشنهادی یکی رو استفاده کنی اگر کد جمع آوری آی دی رو میخوای بگو تا برات بفرستم
موفق باشی

iman_ad
چهارشنبه 25 دی 1387, 21:50 عصر
یک مطلب مهم هست که دوستان اشاره نکردند اونم این که دوست عزیزم شما نباید برام همچین کاری اصلا از query استفاده کنی ترافیک دیتابیس بالا می بری.
شما باید تو روال استارت برنامت تمام محصولات داخل یک datatable کش کنی و تمام جستجوهات با filter دیتاست انجام بدی.
شما می تونی از hash table یا datatable هم استفاده کنی و موقع رفتن به صفحه بعد اگه مثلا از bottun استفاده کنی میتونی از اجزای صفحه parent اسفاده کنی و اونارو می شناسه دیگه احتیاجی به ارسال نیست

baran_mehr
چهارشنبه 25 دی 1387, 21:52 عصر
نه ممنون اون کد رو بلدم. میخوام شیوه هایی که دوستان پیشنهاد کردن رو امتحان کنم و با راه کارای دوستان اشنا بشم.

baran_mehr
چهارشنبه 25 دی 1387, 21:59 عصر
من هم با جستجو های پی در پی موافق نیستم ، البته راه حق اقای راد این کار رو ساده تر کرد.

اگه مثلا از bottun استفاده کنی میتونی از اجزای صفحه parent استفاده کنی و اونارو می شناسه دیگه احتیاجی به ارسال نیست
میشه درباره این مطلبتون بیشتر توضیح بدید.

iman_ad
چهارشنبه 25 دی 1387, 23:32 عصر
آقای راد یک مقاله در این رابطه دارند

elahe1364
پنج شنبه 26 دی 1387, 15:11 عصر
من برای سبد خرید فروشگام از یه dataset استفاده کردم که هر بار برای اینکه اطلاعاتم از بین نره اونو داخل یه session میریزم .

اگه میدونی کمکت میکنه کدش رو دارم بگو تا برات بذارم.

baran_mehr
پنج شنبه 26 دی 1387, 16:37 عصر
ممنون میشم اگر این لطف رو کنید.

elahe1364
پنج شنبه 26 دی 1387, 18:59 عصر
برای اضافه کردن فیلد ها به dataset از این کد استفاده کردم.

DataSet basket = new DataSet();
DataRow dr;
dr = basket.Tables["t1"].NewRow();
dr[0] = ProductRow.Product_ID;
dr[1] = ProductRow.Product_Name;
dr[2] = Convert.ToInt32(ProductRow.Now_Price);
dr[3] = 1;
dr[4] = Convert.ToInt32(ProductRow.Now_Price);
basket.Tables["t1"].Rows.Add(dr);
Session["basket"] = basket;

و برای نمایش این رکوردها توی صفحه مورد نظرتون:

DataSet basket = new DataSet();
basket = (System.Data.DataSet)Session["basket"];
GridView1.DataSource = basket;
GridView1.DataMember = basket.Tables["t1"].ToString();

baran_mehr
پنج شنبه 26 دی 1387, 21:33 عصر
دوست عزیز یه سوال داشتم. خوب چرا از DataTable خالی استفاده نکردین. منظورم اینکه شما هم از دیتاست و هم از دیتا تیبل استفاده کردین، خوب میتونید دیتاست رو حذف کنید.
و یه سوال دیگه استفاده از دیتا برای این کار از سرعت سیستم کم نمیکنه. یعنی طوری نیست که کاربر مدتی رو صرف این کنه که فقط اطلاعات رو از این صفحه به اون صفحه بفرسته؟

zakieh
پنج شنبه 15 بهمن 1388, 01:44 صبح
ُسلام.

من می خوام چند تا از ستونهای گرید ویو رو با کلیک روی linkButton به صفحه دیگه ارسال کنم.
یک مقدار رو با eval("paramete)" nv توی قسمت Command Argument انجام میدم. اما اگه بخوام چند تا مقدار رو ارسال کنم باید چی کار کنم؟

baran_mehr
پنج شنبه 15 بهمن 1388, 18:20 عصر
سلام
سوال شما تغریبا همون سوال منه با تفاوتی اندک
اما فکر کنم مشکل شما با Application حل بشه