PDA

View Full Version : سوال: dropdownlist با ajax



shocraneh
شنبه 21 آذر 1388, 19:31 عصر
منو در اولین ورودم به آجاکس یاری بدین . زبان : وی بی
من با آجاکس کار نکردم . می خام دو dropdownlist طراحی کنم که با انتخاب اولی دومی به روز بشه . مقالات و پروژه های زیادی دانلود کردم .راستش یا خیلی پیشرفته بود یا زبانش فرق می کرد یا لینکش خراب بود
خواهش می کنم یکی یه تکه کد بزاره

imanasp
شنبه 21 آذر 1388, 22:01 عصر
مثال:
دو جدول داریم یکی استان (tbl_state) و دیگری شهر (tbl_city) (عکس ضمیمه)
دو dropdownlist دازیم drpState برای استان و drpCity برای شهر. drpcity باید در یک update panel قرار بگیره و با انتخاب drpstate باید drpcity بروز بشه واین طوری شهرهایی رو میاره که در ارتباط با استان انتخاب شده هستند
در triggers update panel باید کنترل drpState رو با خاصیت SelectedIndexChanged معرفی کنی
حالا باید

protected void drpState_SelectedIndexChanged(object sender, EventArgs e)
{
sqlDescCity.SelectCommand = "select * from tbl_City where sId= " + drpState.SelectedValue.ToString();
}همین!

shocraneh
شنبه 21 آذر 1388, 23:45 عصر
من به عوض استفاده از تریگر این کارو می کردم که جواب نمیده
<asp:DropDownList ID="Drpstate" runat="server" OnSelectedIndexChanged="DropDown_SelectedIndexChanged" >
</asp:DropDownList>

حالا این تریگر رو امتحان کردم نمایش درسته منتها باید یه دکمه خالی (بدون کد) تو صفحه بزارم و بعد از کلیک روی اون جواب میده؟؟؟؟
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Drpstate"
EventName="SelectedIndexChanged" />
</Triggers>
لطفا تو نوشتن تریگر کمکم کنید
یه سوال دیگه : نمی دونم چرا همیشه تعداد لیست دومی یکی کم داره

واقعا رو هاست بزارمش بدون refresh کارشو انجام می ده . نیاز به چیز دیگه ای نیست؟؟؟
از لطفتون ممنونم

imanasp
یک شنبه 22 آذر 1388, 06:28 صبح
[code]
حالا این تریگر رو امتحان کردم نمایش درسته منتها باید یه دکمه خالی (بدون کد) تو صفحه بزارم و بعد از کلیک روی اون جواب میده؟؟؟؟

شما به دکمه نیاز نداری برای drpState خاصیت Enable AutoPostBack رو فعال می کنی و هر دو dropdownlist رو به جداول خودشون بایند می کنی
این هم کد update panel:

<asp:UpdatePanel ID="udpCity" runat="server">
<ContentTemplate>
<asp:DropDownList ID="drpCity" runat="server" CssClass="ddl"
DataSourceID="sqlCity" DataTextField="cName" DataValueField="cId"
AutoPostBack="True" onselectedindexchanged="drpCity_SelectedIndexChanged">
</asp:DropDownList>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="drpState"
EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
رو هاست مشکلی نداره
منظورتون از یکی کم آوردن رو متوجه نمیشم دستورات select رو ببینید درست نوشتید؟ این رو در نظر داشته باشید که بازای هر رکورد در جدول tbl_city باید فیلد sId مقدار استان مربوطه رو بگیره

shocraneh
یک شنبه 22 آذر 1388, 17:38 عصر
با تشکر از تمامی دوستان . فقط یه مشکل کوچیک مونده . وقتی مورد اول رو از لیست انتخاب می کنی
فراخوانی نمیشه و بعد از لود صفحه حتما باید استان های اول به بعد رو بزنی .خوب حالا از این به بعدکه اولی رو انتخاب می کنی جواب میده

imanasp
یک شنبه 22 آذر 1388, 23:45 عصر
با تشکر از تمامی دوستان . فقط یه مشکل کوچیک مونده . وقتی مورد اول رو از لیست انتخاب می کنی
فراخوانی نمیشه و بعد از لود صفحه حتما باید استان های اول به بعد رو بزنی .خوب حالا از این به بعدکه اولی رو انتخاب می کنی جواب میده
این مشکلی هست که خودم دارم من می خواستم که در ابتدا یه متنی رو مثل "لطفا انتخاب کنید " رو اول تو dropdownlist نمایش بدم بعد کاربر بیاد و یکی از گزینه های موجود رو انتخاب کنه برای این کار باید خاصیت AppendDataBoundItems رو در dropdownlist فعال کنی و EditItems رو با متن دلخواه مثل "لطفا انتخاب کنید " پر کنی تا موقع نمایش هم گزینه های جدول بایند شده رو بیاره و هم متنی که میخای به کاربر نشون بدی منتهی یه اشکال داره و اون اینکه بعضی مواقع با انتخاب همین متن "طفا انتخاب کنید" توسط کاربر، برنامه دچار خطا میشه!
بهترین راه حل برای این مشکل استفاده از CasscadingDropdown مجموعه Ajax Toolkit هستش
که روی dropdownlist تعریف میشه والبته کمی هم پیچیدست چون باید وب سرویس کار کنی و .........
من از این روش استفاده کردم ولی error method 500 میده تو سایت 2 بار تایپک زدم ولی مستر چابک به چابکی هر چه تمام پاکش کرد!
این هم لینک آموزش CascadingDropDownExtender با وب سرویس:
http://www.30sharp.com/ShowArticle.aspx?nid=10&did=128&AuthorID=1

imanasp
سه شنبه 08 دی 1388, 22:33 عصر
کسی تا به حال از این روش پر کردن dropdownlist با وب سرویس به کمک کنترل casscading dropdown کارکرده من بهش نیاز دارم
ممنون میشم کمکم کنید

raziee
چهارشنبه 09 دی 1388, 10:59 صبح
کسی تا به حال از این روش پر کردن dropdownlist با وب سرویس به کمک کنترل casscading dropdown کارکرده من بهش نیاز دارم
ممنون میشم کمکم کنید
بله بنده کار کردم.
شما هنوز مشکلتون در این باره حل نشده؟

imanasp
چهارشنبه 09 دی 1388, 11:39 صبح
بله بنده کار کردم.
شما هنوز مشکلتون در این باره حل نشده؟

نه متاسفانه زمان اجرا توی dropdownlist ها به این مقدار error method 500 پر میشه که ظاهرا از اشکال از وب سرویس هستش
ببینید 5 تا dropdownlist آبشاری دارم که به ترتیب استان-شهر-دانشگاه-مقطع-رشته هستند
که سه تای اولی رو در وب سرویس کد نوشتم اما چون جواب نداد دو تای بعدی رو بیخیال شدم
ممنون میشم کمکم کنید سورسش رو میذارم منتهی toolkit رو برداشتم چون حجمش زیاد بود

raziee
پنج شنبه 10 دی 1388, 10:50 صبح
نه متاسفانه زمان اجرا توی dropdownlist ها به این مقدار error method 500 پر میشه که ظاهرا از اشکال از وب سرویس هستش
ببینید 5 تا dropdownlist آبشاری دارم که به ترتیب استان-شهر-دانشگاه-مقطع-رشته هستند
که سه تای اولی رو در وب سرویس کد نوشتم اما چون جواب نداد دو تای بعدی رو بیخیال شدم
ممنون میشم کمکم کنید سورسش رو میذارم منتهی toolkit رو برداشتم چون حجمش زیاد بود
سلام.
من کد های شما رو دیدم.
به ظاهر که هیچ مشکلی در وب سرویس ندارید . راستش نمیدونم که چرا ارور میده.
ولی تو فکرم هست.

imanasp
دوشنبه 21 دی 1388, 10:36 صبح
مشکل من هم هست
بهتره وقت خودت رو بیشتر از این تلف نکنی من کنترل CasscadingDropdown رو بیخیال شدم
و خودم جوری کد نوشتم که مثل اون کار میکنه! البته با وب سرویس خیلی سرعت بهتر و سلکت روی بانک یک دفعه انجام میشه ولی فعلا چاره ای نیست جز این روش:
در page_load صفحه drpCity.Enabled = false; بنویس
برای dropdown استان و شهر AppendDataBoundItems="True" تنظیم کن و این کد رو در رویداد SelectedIndexChanged بنویس:

protected void drpState_SelectedIndexChanged(object sender, EventArgs e)
{
int i;
i = Convert.ToInt32(drpState.SelectedValue);
if (i == 0)
{

}
else
{
drpCity.Enabled = true;
drpCity.Items.Clear();
drpCity.Items.Add("لطفا انتخاب نمایید ...");
Sqlcity.SelectCommand = "select * from tbl_City where sId=" + drpState.SelectedValue.ToString();

}کد html:

<asp:DropDownList ID="drpState" runat="server" AppendDataBoundItems="True"
AutoPostBack="True" CssClass="ddl" DataSourceID="Sqlstate" DataTextField="sName"
DataValueField="sId" onselectedindexchanged="drpState_SelectedIndexChanged">
<asp:ListItem Value="0">لطفا انتخاب نمایید ...</asp:ListItem>
</asp:DropDownList>

shocraneh
دوشنبه 21 دی 1388, 20:26 عصر
این شیوه رو قبلا من استفاده کردم . منتها یه اشکالاتی داشت که در تاپیک های قبلی به اون اشاره کردم . اونارو چه طوری بر طرف کردید .میشه پروژه رو بزارید ؟ ممنون

shocraneh
سه شنبه 22 دی 1388, 07:35 صبح
AppendDataBoundItems="True مشکلات زیادی به بار میاره . اگه امکانش هست پروژه بزار . من عجله دارم

imanasp
سه شنبه 22 دی 1388, 08:48 صبح
AppendDataBoundItems="True مشکلات زیادی به بار میاره . اگه امکانش هست پروژه بزار . من عجله دارم
اینم برنامه
نکته ای که هست اینه که اگه کاربر "لطفا انتخاب کنید ..." رو هم انتخاب کنه برنامه خطا نمی گیره چون تو if کاری براش تعریف نشده!

shocraneh
سه شنبه 22 دی 1388, 11:33 صبح
آیا ajax control toolkit همون فایل dll است یا باید همراه اون یه سری اسکریپ هم باشه ؟
http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=16488
راستش من یه برنامه از لینک گرفتم اینقدر اسکریپ داره که نمی دونم چی به چیه .....
اسکریپ ها رو هم گرفتم باید چی کارشون کنم ؟؟

شاید اصلا ajax control toolkit حالت نصبی داره ؟؟ اگه اینجوریه یه لینک می خام . ممنون

hamzeh241
یک شنبه 21 آذر 1389, 13:06 عصر
منو در اولین ورودم به آجاکس یاری بدین . زبان : وی بی
من با آجاکس کار نکردم . می خام دو dropdownlist طراحی کنم که با انتخاب اولی دومی به روز بشه . مقالات و پروژه های زیادی دانلود کردم .راستش یا خیلی پیشرفته بود یا زبانش فرق می کرد یا لینکش خراب بود
خواهش می کنم یکی یه تکه کد بزاره
با سلام اینم جواب شما به سورس کد توضیح داده شده، دمو و به زبان وی بی برو خیرشو ببینی
جواب شما (http://www.30sharp.com/ShowArticle.aspx?nid=10&did=128&AuthorID=1)