PDA

View Full Version : dropdown تو در تو



saeed31641
یک شنبه 17 خرداد 1394, 08:53 صبح
با سلام
من سه تا دراپ دون استفاده میکنم بنام a , b , c
حالام میخام اگه طر ف امد a رو انتخاب کرد b پر بشه وقتی b پر شد c هم از مقدار b پر بشه
من a, b رو بدون مشکل پر میکنم ولی تو c مشکل دارم چوم خاصیتchange اثر نداره. البته اینم بگم کاربر باید فقط a انتخاب کنه بعدش با توجه به مقادیر پیش فرض b دراپ دون c پر بشه

salar IT man
یک شنبه 17 خرداد 1394, 13:00 عصر
کافیه هنگامی که درخواست succss بود و drp b پر شد ، یک درخواست را به سمت سرور با مقدار value اولین option مربوط به drp b ، ارسال کنید یا... اینکه سمت سرور دیتا های مورد نیاز drp c را هم همراه دیتا های مورد نیاز drp b ب بفرسیتد سمت کاربر.

saeed31641
یک شنبه 17 خرداد 1394, 14:06 عصر
کافیه هنگامی که درخواست succss بود و drp b پر شد ، یک درخواست را به سمت سرور با مقدار value اولین option مربوط به drp b ، ارسال کنید یا... اینکه سمت سرور دیتا های مورد نیاز drp c را هم همراه دیتا های مورد نیاز drp b ب بفرسیتد سمت کاربر.

چطوری وقتی drp b پر شد همزمان بدون انتخاب کردن دیتاشو بفرستم سمت سرور.از تابع change استفاده میکنم که خوب من میخام بدون change باشه .یجورایی خودش وقتی پر شد اولین انتخاب رو بفرست مقدارش سمت سرور
انطوری بگم سه تا دراپ دارم بنام گروه اموزش -- رشته - درس
وقتی گروه انتخاب میشه اگه تو اون گروه ما یه رشته داشته باشیم در دراپ رشته فقط یه رکورد میاره حالا من این یه ایتم که نوشون داده رو نمیتونم انتخاب کنم یعنی خاصیت change تغییر نمیکنه که بفرستم ایدی رو به سمت سرور که اطلاعات دراپ درس پر بشه.
اگه چند تا رشته باشه خاصیت change تغییر میکنه ولی برای یک رکورد نه

salar IT man
یک شنبه 17 خرداد 1394, 15:30 عصر
چطوری وقتی drp b پر شد همزمان بدون انتخاب کردن دیتاشو بفرستم سمت سرور.از تابع change استفاده میکنم که خوب من میخام بدون change باشه .یجورایی خودش وقتی پر شد اولین انتخاب رو بفرست مقدارش سمت سرور
انطوری بگم سه تا دراپ دارم بنام گروه اموزش -- رشته - درس
وقتی گروه انتخاب میشه اگه تو اون گروه ما یه رشته داشته باشیم در دراپ رشته فقط یه رکورد میاره حالا من این یه ایتم که نوشون داده رو نمیتونم انتخاب کنم یعنی خاصیت change تغییر نمیکنه که بفرستم ایدی رو به سمت سرور که اطلاعات دراپ درس پر بشه.
اگه چند تا رشته باشه خاصیت change تغییر میکنه ولی برای یک رکورد نه

عزیز من از jquery استفاده کنید ، لازم نیست ایونتی رخ دهد به شکل زیر :


var data=$("#dropdownBId option:first").val()

saeed31641
یک شنبه 17 خرداد 1394, 17:19 عصر
عزیز من از jquery استفاده کنید ، لازم نیست ایونتی رخ دهد به شکل زیر :


var data=$("#dropdownBId option:first").val()






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




$('#rdbdep').change(function () {
jQuery.getJSON('@Url.Action("SelectCategory")', { id: $(this).attr('value') }, function (data) {
$('#rdbmajor').empty();
jQuery.each(data, function (i) {
option = $('<option></option>').attr("value", data[i].Major_ID).text(data[i].Major_Name);
$('#rdbmajor').append(option);
});
});



کد بالا دراپ اولی ودومی رو پر میکنه
کد زیر دارپ دومی وسومی




$('#rdbmajor').change(function () {

jQuery.getJSON('@Url.Action("Selectmajor")', { id: $(this).attr('value') }, function (data) {
$('#rdbCourse').empty();
jQuery.each(data, function (i) {
var option = $('<option></option>').attr("value", data[i].Course_ID).text(data[i].Course_Name);
$("#rdbCourse").append(option);
});
});
});


این مد درسته ج میده ولی اگه دراپ دومی یه ایتم باشه نمیشه انتخاب کرد یعنی روادی change پیش نمیاد.کد شما هم رو که بایدجای صدا زد.

salar IT man
یک شنبه 17 خرداد 1394, 17:32 عصر
شما گفتید:
البته اینم بگم کاربر باید فقط a انتخاب کنه بعدش با توجه به مقادیر پیش فرض b دراپ دون c پر بشه

یعنی اینکه میخوایین با انتخاب a ، هم b پر شود و هم c با توجه به پیشفرض b ، پر شود!
منم گفتم هنگامی که b پر شد ، همون جا یه درخواست دیگه برا پر کردن c بفرست با مقدار اول موجود در b


$('#rdbmajor').change(function () {

jQuery.getJSON('@Url.Action("Selectmajor")', { id: $(this).attr('value') }, function (data) {
$('#rdbCourse').empty();
jQuery.each(data, function (i) {
var option = $('<option></option>').attr("value", data[i].Course_ID).text(data[i].Course_Name);
$("#rdbCourse").append(option);
});
var data=$("#rdbCourse option:first").val();
request with this data to fill drp C
});
});


این یک روش است. می توانید اصلا سمت سرور این کار رو کنید و با یک درخواست هم data را برای b بگیرید هم اینکه همان لحظه که لیست b را با json میفرستید ، data را برای c هم بفرستید .
یعنی در همون درخواست با استفاده از اولین رکورد لیستی که قرار است b را پر کند ، لیست c را هم کوئری بگیرید و به صورت



return Json({bData:data,cData:where course id is first of data},JsonBehavier.AllowGet);

saeed31641
یک شنبه 17 خرداد 1394, 18:11 عصر
روش اول که ج نمیده نال میفرسته البته ایدی رو میگره ها.چون درخواست اول هنوز به پایان نرسیده میره درخواست دوم نمی تونم مقدار بفرسته نال میفرسته .ولی روش دوم میشه بگین تو view چطوری بگیرم

salar IT man
یک شنبه 17 خرداد 1394, 19:00 عصر
بله درسته نباید جواب بده برای اصلاح روش اول میتونید


$('#rdbmajor').change(function () {

jQuery.getJSON('@Url.Action("Selectmajor")', { id: $(this).attr('value') }, function (data) {
$('#rdbCourse').empty();
jQuery.each(data, function (i) {
var option = $('<option></option>').attr("value", data[i].Course_ID).text(data[i].Course_Name);
$("#rdbCourse").append(option);
});

});
var data=$("#rdbCourse option:first").val();
request with this data to fill drp C
});



روش دوم هم همچین چیزی میشه تقریبا:


$('#rdbmajor').change(function () {

jQuery.getJSON('@Url.Action("Selectmajor")', { id: $(this).attr('value') }, function (data) {
$('#rdbCourse').empty();
jQuery.each(data.bData, function (i) {
var option = $('<option></option>').attr("value", data[i].Course_ID).text(data[i].Course_Name);
$("#rdbCourse").append(option);
});
jQuery.each(data.cData, function (i) {
var option = $('<option></option>').attr("value", data[i].Course_ID).text(data[i].Course_Name);
$("#c").append(option);
});
});
});