PDA

View Full Version : واکشی همزمان چندین جدول به طور هم زمان در یک صفحه



sara_aryanfar
شنبه 22 بهمن 1390, 14:38 عصر
با سلام من در صفحه ای که دارم نیاز دارم از سه الی چهار جدول برای کنترل های مختلف اطلاعات رو واکشی کنم مثلا برای دو ریپرتر و چندین کنترل نمایش داده دیگر در حال حاضر برای هر کنترل دارم از یک دیتا سورس استفاده می کنم برای بایند می خواستم بدونم نمی تونم برای همشون از یک دیتا سورس استفاده کنم یعنی همه جدول های مورد نیاز صفحه خودم رو با یک دیتا سورس واکشی کنم ؟و اینکه روش استاندارد این کار چی هست ممنون

moslem.hady
شنبه 22 بهمن 1390, 14:57 عصر
سلام. منم یه زمانی دقییقا همین رو میخواستم و اولین چیزی که به ذهنم رسید رو اجرا کردم.
اول یه استور پروسیجر ساختم که تمام سکلت هایی رو که میخوام پشت سر هم داره. مثلا:
SELECT ID, Title FROM Article

SELECT ID, GroupName FROM Groups

SELECT ID, UserName FROM Users
بعد توی لود صفحه اون رو فراخونی کردم و با ()Next. به ریپیتر ها(گریدویو یا هرچی) دیتاسورس دادم:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString"].ConnectionString);
conn.Open();

SqlCommand cmd = new SqlCommand("YourStoredProcedure", conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader reader = cmd.ExecuteReader();
Repeater1.DataSource = reader;
Repeater1.DataBind();

reader.NextResult();


Repeater2.DataSource = reader;
Repeater2.DataBind();

reader.NextResult();


Repeater3.DataSource = reader;
Repeater3.DataBind();

reader.NextResult();
......

reader.Close();
conn.Close();
اینطوری سلکت اول میشه برای ریپیتر اول، سلکت دوم برای ریپیتر دوم و.....
نمیدونم این روش درسته یا نه. دوستان نظر بدن

sara_aryanfar
شنبه 22 بهمن 1390, 17:17 عصر
راستشو بخواین تا حالا با استور پروسیجر کار نکردم ممکنه در مورد ساختن اون برام یکم توضیح بدین ممنون میشم

mmnoody2006
شنبه 22 بهمن 1390, 18:05 عصر
Repeater1.DataBind();


Repeater2.DataBind();


Repeater3.DataBind();

برادر عزیز هیچ فرقی نداره باز هم کانکشن 3 بار باز و بسته شده :قلب:

moslem.hady
شنبه 22 بهمن 1390, 18:07 عصر
برادر عزیز هیچ فرقی نداره باز هم کانکشن 3 بار باز و بسته شده :قلب:
ینی همون 3بار فراخونی میشه؟ هیچ فرقی نمیکنه؟ حدس میزدم!!
روش درست چیه؟

mmnoody2006
شنبه 22 بهمن 1390, 18:15 عصر
برادر والله خیلی دلم می خواست کمک کنم چون همین دیروز تو stackoverflow دیدم الانم دوباره رفتم که یادم نیست کجا دیدم دقیقا :گریه:

sara_aryanfar
شنبه 22 بهمن 1390, 19:17 عصر
ولی خوب از حجم کد نویسی کم شده

moslem.hady
شنبه 22 بهمن 1390, 19:35 عصر
در مورد استورپروسیجر هم:
روی دیتابیستون راست کلیک کنید و New Query رو بزنید بعد:

CREATE PROCEDURE [dbo].[نام استورپروسیجر]
AS
BEGIN
SELECT ID, Title FROM Article

SELECT ID, GroupName FROM Groups

SELECT ID, UserName FROM Users
END
GO