ورود

View Full Version : سوال: پر کردن گریدویو با Jquery



amironline
دوشنبه 31 مرداد 1390, 18:43 عصر
چطوری میشه یک گریدویو رو به تدریج با خوندن اطلاعات از دیتابیس نشون داد؟

mehdi.mousavi
دوشنبه 31 مرداد 1390, 23:28 عصر
چطوری میشه یک گریدویو رو به تدریج با خوندن اطلاعات از دیتابیس نشون داد؟

سلام.
برای شروع، باید وب سرویسی داشته باشید که رکوردهای مورد نظر شما رو برگردونه (با قالب XML، یا JSON).
سپس، در فواصل مورد نظر، (فرضا هر چند ثانیه یک بار) با استفاده از یکی از متودهای get (http://jqapi.com/#p=jQuery.get)، post (http://jqapi.com/#p=jQuery.post)، getJSON (http://jqapi.com/#p=jQuery.getJSON) یا ajax (http://jqapi.com/#p=jQuery.ajax)
(یا دیگر متودهای jQuery) اطلاعات مورد نظر رو از وب سرویس دریافت کنید و اونو به row های انتهایی جدول append (http://jqapi.com/#p=append) کنید.

موفق باشید.

amironline
سه شنبه 01 شهریور 1390, 00:55 صبح
ممنونم ولی منظورم این بود که مثلا چطوری میشه با خوندن هر سطر یک DataTable با Jquery به گرید اضافه اش کنیم

ricky22
سه شنبه 01 شهریور 1390, 09:13 صبح
ممنونم ولی منظورم این بود که مثلا چطوری میشه با خوندن هر سطر یک DataTable با Jquery به گرید اضافه اش کنیم
وب سرویسی که آقای موسوی ذکر کردند می تواند اطلاعات را از DataTable هم بخواند.
در این (http://weblogs.asp.net/ahmedmoosa/archive/2010/10/30/bind-gridview-using-jquery.aspx)مثال می توانید یک نمونه ی پیاده سازی شده را مشاهده کنید.

amironline
سه شنبه 01 شهریور 1390, 10:41 صبح
من این مثال رو دیدم ولی تا زمانیکه کل اطلاعات گریدویو خونده نشه، نشون داده نمیشه یعنی سطر به سطر نشون نمیده

mehdi.mousavi
سه شنبه 01 شهریور 1390, 14:11 عصر
من این مثال رو دیدم ولی تا زمانیکه کل اطلاعات گریدویو خونده نشه، نشون داده نمیشه یعنی سطر به سطر نشون نمیده

سلام.
در مثالی که آقای کیاست آدرسش رو دادن، تابعی وجود داره به اسم GetNames که بدین شکل پیاده سازی شده:

[WebMethod]
public static Names[] GetNames()
{
List<Names> list = new List<Names>();
DataTable dt = DataStore.GetDataTable();
foreach (DataRow row in dt.Rows)
{
Names _names = new Names();
_names.FirstName = row["Name"].ToString();
_names.Age = row["age"].ToString();

list.Add(_names);
}
return list.ToArray();
}

همونطوری که می بینید، این تابع داره کلیه Row های DataTable رو میخونه و اونو بصورت آرایه ای از Name ها بر میگردونه. شما باید این تابع رو تغییر بدید، که تنها یک Name رو برگردونه.
در مرحله بعدی، باید Formal Parameter تابع رو تغییر بدید که بدونید با هر بار Invoke شدن این متود، چه رکوردی رو باید به Client برگردونید (فرضا با ارسال یک شناسه، می تونید رکوردی
رو که حاوی شناسه بعدی بزرگتر از شناسه فعلی هستش رو به Client برگردونید). بدین ترتیب، می تونید همواره رکورد بعدی رو از سرور درخواست کرده، و با همون متود append به
جدول اضافه کنید.

موفق باشید.

پاورقی: من نمیدونم چه هدفی رو دنبال می کنید، اما اینکه بخواهید با هر Round-Trip یک رکورد رو از بانک بگیرید و اونو به سمت Client بیارید، به نظر ایده Optimal ای نیست...
اگر فقط هدف نحوه نمایش Row به Row هستش، میتونید کل اطلاعات رو با یک Round-Trip بگیرید، سپس سمت Client اونها رو با مکث به جدول اضافه کنید.
اگر هدف نمایش وقایعی هستش که به مرور زمان سمت سرور رخ میده و ذخیره میشه، بهتره نگاهی به Comet بندازید.