PDA

View Full Version : مشکل در نمایش یک نوع خاص از اطلاعات



iman_pc_love
چهارشنبه 26 مهر 1385, 23:57 عصر
در طراحی یک سایت در asp.net 2 دچار مشکل شده ام.
فرض کنید در یک پایگاه داده دو جدول داریم که اطلاعات طبقات و کلاس های یک مدرسه را دارند. یکی از جدول ها برای نگهداری اطلاعات طبقات و دیگری برای نگهداری اطلاعات کلاسها است که با هم ارتباط یک به چند دارند. من از یک دیتا لیست برای نمایش اطلاعات طبقات و درون دیتا لیست از یک دیتا گرید برای نمایش اطلاعات کلاسهای داخل هر طبقه استفاده کردم. حالا مشکل اینجاست که من نمی دانم چطوری اطلاعات دیتا گرید رو پر کنم که در هر قسمت از دیتا لیست که اطلاعات طبقه رو نشون میده تو دیتاگریدش اطلاعات کلاسهای اون طقبه رو نشون بده. در ضمن مثال کلاس و طبقه رو از خودم ساختم چون اگه مسئله اصلی رو میگفم خیلی پیچیده میشد. لطفا اگه کسی میتونه کمک کنه اگه نمونه داشته باشه و زمیمه کنه که خیلی خوبه، یا شایدم راه حل بهتری به جز دیتا لیست وجود داشته باشه که من نمی دونم. در آخر هم یه نمونه از شکل خروجی که می خواهم باشه براتون میزارم.




شماره طبقه : 1 مدیر طبقه : ایمان رحیمی نیا
کلاس 1
کلاس 2

شماره طبقه : 2 مدیر طبقه : حسن رحیمی نیا
کلاس 10
کلاس 8
کلاس 9

Y2K
پنج شنبه 27 مهر 1385, 01:43 صبح
Hierarchical Data Binding in ASP.NET (http://msdn2.microsoft.com/en-us/library/aa478959.aspx)

This will show a sample of hierarchical data bound to hierarchical List Controls (http://pranas.net/Tutorials/asp/HierarchicalDataBinding.shtml)

iman_pc_love
پنج شنبه 27 مهر 1385, 12:08 عصر
توضیحات این دو تا خیلی گنگ بود من که نفهمیدم
اگه میشه یه توضیحی راجع به نحوه طراحی این مدل ها بدید

iman_pc_love
جمعه 28 مهر 1385, 11:21 صبح
نمیشه بدون اینکه پست جدید بفرستم این تاپیک رو بیارم صفحه اول سایت که بقیه هم ببینند؟

iman_pc_love
جمعه 28 مهر 1385, 23:34 عصر
کسی نیست کمک کنه؟ کم کم دارم نا امید میشم

mahdi_negahi
شنبه 29 مهر 1385, 07:53 صبح
کسی نیست کمک کنه؟ کم کم دارم نا امید میشم

دوست خوبم نا امید نشه در نا امیدی جایی بسی امید است

امید وارم در کد نویسی مشکل نداشته باشی چون وقت ندارم برات کدش را بذارم

1- در دیتا لیست یک رویداد یا همان event وجود دارد به نام SelectedIndexChanged
2- در دیتا لیست خودت یک lable میگذاری(حالت item template) که کلید اصلی جدول اطلاعات طبقات به آن بایند شده (bind)
3-خوب وقتی کاربر روی هر سطری کلید میکند تو باید مقدار آن lable برای آن سطر را به دست بیاوری به این صورت

Label lID;
lID = (Label) DataList1.SelectedItem.FindControl("lable1");
string strID = lID.Text;
4- خوب دیگر از اینجا به بد تابلو است تو کلید اصلی جدول را داری یک query اس کیو ال میزنی و آنها را join میکنی و به DataGrid جوین میکنی

iman_pc_love
شنبه 29 مهر 1385, 17:50 عصر
آخه مشکل اینجاست که تمام اطلاعات طبقات و کلاسها با هم باید نمایش داده بشند تو یه صفحه بدون کلیک کاربر، رویداد دیگه ای نداره؟

yasak5
شنبه 29 مهر 1385, 18:15 عصر
سلام،
از دو تا DataList داخل همدیگه باید استفاده کنی. یکی که اطلاعات طبقات رو نشون می ده و اون یکی DataList رو توی TemplateItem دیتالیست اول قرار بده و DataSource دو اینجوری تنظیم کن :


DataSource=<%#SelectClasses(DataBinder.Eval(Container.DataItem , "Tabaghe_ID"))%>

iman_pc_love
یک شنبه 30 مهر 1385, 13:44 عصر
یک سوال دیگه، من وقطی تمپلیت یک دیتا لیست رو ادیت میکنم و توش کنترل میزارم چرا تو قسمت کد نویسی هیچ کدوم از کنترل ها قابل دسترسی نیست؟
کسی میدونه چطوری؟

yasak5
یک شنبه 30 مهر 1385, 14:00 عصر
سلام،
وقتی به کنترل داخل یه کنترل دیگه قرار بگیره چون جزو فرزند های کنترل اول حساب می شه به طور مستقیم در کد قابل دسترسی نیست. برای دسترسی به کنترل های فرزند از دستور FindControl کنترل پدر می شه استفاده کرد :


((DataList)parentDataList.FindControl("childDataList")).DataSource = somedatasource



فانکشن FindControl یه Object بر می گردونه و برای اینکه ما به عنوان یه DataList بتونیم باهاش کار کنیم همونطور که بالا هم نشون داده شده باید به DataList تغییر نوع (type cast و یا boxing) انجام بدیم.

iman_pc_love
دوشنبه 01 آبان 1385, 20:19 عصر
نمیدونم چرا این فانکشن درست عمل نمی کنه همش null بر میگردونه در ضمن از اسم کنترل هم مطمئنم که درست وارد کردم چه دلیل دیگه ای میتونه داشته باشه؟

iman_pc_love
جمعه 05 آبان 1385, 19:27 عصر
کسی دلیلشو نمیدونه؟