PDA

View Full Version : سوال: ويرايش گروه و زيرگروه



bftarane
دوشنبه 18 دی 1391, 11:42 صبح
سلام.
من يه بخش براي افزودن خبر دارم.
موقع افزودن خبر کاربر بايد گروه خبر رو از يه دراپدان ليست انتخاب کنه و بعد زير گروه رو از دراپدان ليست بعدي انتخاب کنه.

به شکل زير

97994
در اضافه کردن خبر مشکلي وجود نداره.
حالا موندم موقع ويرايش آيا بايد گروه و زيرگروه خبر رو چطور امکان ويرايشش رو به کاربر بدم
خوب من با يه کوئري مي تونم به نام و شناسه گروه و زيرگروه دسترسي داشته باشم
و راهي که به ذهن خودم ميرسه اينه که بيام دو تا دراپ دان دوباره بزارم اولين آيتمشون همون گروه و زيرگروهي باشه که موقع درج توسط کابر انتخاب شده و آيتمهاي بعدي گروه ها و زيرگروه هاي ديگه باشن ولي اين کار رو نمي دونم چطور بايد انجام بدم.
شما جاي من بوديد از چه روشي استفاده مي کرديد؟

خوب الآن فقط گروه و زيرگروه داريم يعني دو سطح
من مي خوام از روشي استفاده کنم که اگه سطحها بيشتر شد هم توسعه راحت باشه
مثلاً اگه زير گروه هم خودش زيرگروه داشته باشه

اگه موقع افزودن هم به جاي دراپ دان ليست ها روش بهتري براي انتخاب گروه و زيرگروه به نظرتون مي رسه لطفاً بگيد.

sh.eng
دوشنبه 18 دی 1391, 14:53 عصر
سلام.
حقیقتا من که از نحوه درج اطلاعاتتون متوجه نشدم ولی فکر کنم به راحتی قابل پیاده سازی باشه. چندتا سوال:
تمام اطلاعات خبر در یک جدول درج میشه؟ مثلا به این شکل: نویسنده، تاریخ انتشار، مجموعه، زیر مجموعه... (هر خبر فقط یک مجموعه و زیرمجموعه دارد)
یا اینکه برای هر کدام از گروه ها و... هم یک جدول دیگه دارید؟
گروها و زیرگروها نیز جدول دارند؟

اگر امکان هست در مورد آن بیشتر توضیح بدید.
موفق باشید.

bftarane
دوشنبه 18 دی 1391, 15:32 عصر
خواهش ميکنم البته که امکانش هست.
البته فکر کنم عکس بزارم قضيه خيلي مشخص تر ميشه.
جدول News
98000
جدول NewsCat (براي گروه و زير گروه)
98001
جدول NewsCat مياد آي دي گروه و همچنين ParetnId رو نگه مي داره يعني اين جدول قابليت n سطحي بودن رو هم داره.
گروه هاي سطح اول ParentId شون صفره.
بقيه هم NewCatId پدرشون ميشه ParentId شون.
اگه بازم توضيحي لازمه بگيد تا توضيح بدم.
من پياده سازي به هر حال مي تونم انجام بدم ولي مي خوام يه راه خوب و قابل توسعه باشه.

راستي اين کدها هم در درج استفاده مي کنم

MyDALBase.ExecuteScaler(System.Data.CommandType.St oredProcedure, "InsertNews", new SqlParameter[]{
new SqlParameter("@Title",txt_title.Text),
new SqlParameter("@Abstract",txt_Abstract.Text),
new SqlParameter("@Contents",txtbody.Text),
new SqlParameter("@Pic",filename),
new SqlParameter("@Author",txt_author.Text),
new SqlParameter("@StartDate",dpstart.EnDate),
new SqlParameter("@Year",PersianDate.GetYear(dppub.EnDate)),
new SqlParameter("@Month",PersianDate.GetMonthName(dppub.EnDate)),
new SqlParameter("@ExpiredDate", dpexpire.EnDate),
new SqlParameter("@PublishDate",dppub.EnDate),
new SqlParameter("@keywords",txtkey.Text),
new SqlParameter("@NewsCatID", drpsub.SelectedItem.Value)
});
هر خبر در اينجا فقط در يک زيرمجموعه ثبت ميشه.

alonemm
دوشنبه 18 دی 1391, 16:32 عصر
باسلام:

شما در حالت ویرایش میتونید مقادر ID که برای گروه ها و زیرگروه ها مشخص کردید رو از جدول بخونید سپس بعد از بایند شدن drop down list ها میتونید شماره انتخاب سطر رو با ID که دارید ست کنید و بعد از دکمه ویرایش میتونید مقدار جدید این فیلدهارو جای گزین قبلی کنید.


موفق باشید.

bftarane
دوشنبه 18 دی 1391, 17:06 عصر
اين طوري نوشتم

drpcat.DataTextField = "Name";
drpcat.DataValueField = "NewsCatID";
drpcat.SelectedItem.Value = "13";
فکر کنم منظورتون همين بود.
ولي به نظرتون اگه تعداد سطوح بيشتر بشه با استفاده از دراپ دان کار سخت نميشه؟ خودم فکر مي کنم شايد بهتر باشد از گريدويو تو در تو استفاده کنم. نظر شما چيه؟

alonemm
دوشنبه 18 دی 1391, 17:24 عصر
خب اگه تعداد سطرها خیلی زیاد نباشه که همون DropDownList جواب میده.

برای تعداد های رکورد زیاد من خودم از یک Server Control که یک پنل متحرک هست استفاده میکنم و داخلش هم گرید رو میزارم و گزینه انتخاب شده رو در یک تکس یا هر چیزی ذخیره میکنم.

مانند شکل ضمیمه.

alonemm
دوشنبه 18 دی 1391, 17:31 عصر
برای استفاده از این سرور کنترل به آدرس زیر مراجعه کنید:

دانلود کنید! سرور کنترل پنل متحرک با قابلیت حفظ موقعیت پس از درخواست Ajax --- AloneServerControl (http://barnamenevis.org/showthread.php?337911-%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%DA%A9%D9%86%DB%8C%D8%AF!-%D8%B3%D8%B1%D9%88%D8%B1-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%BE%D9%86%D9%84-%D9%85%D8%AA%D8%AD%D8%B1%DA%A9-%D8%A8%D8%A7-%D9%82%D8%A7%D8%A8%D9%84%DB%8C%D8%AA-%D8%AD%D9%81%D8%B8-%D9%85%D9%88%D9%82%D8%B9%DB%8C%D8%AA-%D9%BE%D8%B3-%D8%A7%D8%B2-%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA-Ajax-AloneServerControl)

sh.eng
دوشنبه 18 دی 1391, 20:28 عصر
در مورد نوع پیاده سازی که به نظر من کاملا درسته. فقط کاش برای NewsCat هم یک کلید اضافی قرار میدادید. (نظر شخصی خودمه کار شما هم درسته). اگر درست قضیه شما را متوجه شده باشم، من بودم به این شکل پیاده سازی میکردم.

(شماره یک) یک جدول اخبار داریم و (شماره دو) یک جدول گروه های خبری اخبار و (شماره سه) یک جدول گروه های خبری.
جدول اخبار که مشخصات خبر توشه، جدول گروه های خبری اخبار که مشخصات گروه های هر خبر توشه، جدول گروه های خبری هم کل گروه ها اونجا هستند (یه سوال: بهتر نیست شما گروه های خبری را ایستا نکنید و مدیر سایت بتونه گروه اضافه کنه و حذف کنه؟)

خب در مورد نوع کنترل استفاده شده بستگی به خودتون داره، مثلا برای شهرها، کشورها و... از همین DropDownList استفاده میکنند حالا شما ببینید حجم کار شما چقدره.

جدول شماره سه: گروه های خبری
-شماره گروه
-نام گروه
-شماره پدر

جدول شماره یک: جدول اخبار
-شماره خبر
-شماره گروه های خبری
و...

جدول شماره دو: جدول گروه های خبری
-شماره گروه های خبری
-شماره گروه
و...

خب ارتباط بین جدول خبر با جدول گروه های خبری (شماره گروه های خبری) و ارتباط بین جدول گروه های خبری و جدول گروه ها (شماره گروه) هستش.

نحوه select گروه ها و قرار دادنشون در DropDownList که واضحه. برای درج هم که مشکلی ندارید. برای ویرایش و حذف هم وقتی زیر گروه ای یا هر چیز دیگه انتخاب میشه (شماره گروه خبری که در DropDownList قرار داره) را برداشته و استفاده کنید.

اگر سوالی بود من درخدمتم...
موفق باشید

bftarane
دوشنبه 18 دی 1391, 22:24 عصر
اتفاقاً يه قسمت براي درج گروه خبري دارم و ادمين اينا رو به صورت دايناميک ايجاد ميکنه.
خوب پس نتيجه اي که مي گيرم اينه که استفاده از همين دراپ دان کار درستيه.