PDA

View Full Version : پر کردن dropdown های داخل یک gridview



مهدی رحیم زاده
شنبه 20 فروردین 1390, 11:12 صبح
با سلام خدمت تمامی دوستان عزیز
من توی هر رکورد گریدویو دوتا dropdownlist دارم که یکی مربوط به استان و دومی مربوط به شهرستان های اون استان هست . با پرکردنشون مشکلی ندارم . سوالم اینجاست که چطور میتونم موقع انتخاب یک استان dropdown شهرستان ها رو با شهرستان های همون استان پر کنم ؟
با تشکر

Hess_r
شنبه 20 فروردین 1390, 12:56 عصر
میتونید با استفاده از دستور swich از انتخاب هر گزینه مطلع بشید و بعد با توجه به اون dropdownlist رو پر کنید.

hlikehamed
شنبه 20 فروردین 1390, 13:49 عصر
می تونید توی selected index changed آی دی استان انتخاب شده رو بگیرید و بعد یک query بزنید و تمام شهرهایی که آی دی استان اون ها مورد درخواست هست رو از بانک بخونید بعد بایند کنید به dropdown دوم.

مهدی رحیم زاده
شنبه 20 فروردین 1390, 23:37 عصر
میتونید با استفاده از دستور swich از انتخاب هر گزینه مطلع بشید و بعد با توجه به اون dropdownlist رو پر کنید.
میشه یه خورده بیشتر برام توضیح بدین؟

می تونید توی selected index changed آی دی استان انتخاب شده رو بگیرید و بعد یک query بزنید و تمام شهرهایی که آی دی استان اون ها مورد درخواست هست رو از بانک بخونید بعد بایند کنید به dropdown دوم.
این کار رو کردم اما جواب نداد!
ممنون میشم بیشتر برام توضیح بدین.
باتشکر

hlikehamed
یک شنبه 21 فروردین 1390, 09:07 صبح
ببینید شما یک جدول دارین نام استان ها :
provinceid ,provincename
یک جدول هم دارید برای شهرها:
cityid,cityname,privinceid
که provinceid یک کلید خارجی

تا اینجا که مشکلی نیست.

text کنترل dropdown رو اسم استان و value رو برابر با id استان میزاری.
خاصیتی autopostback کنترل اول رو ture کن و توی selectedindexchanged اینطور میتونی بنویسی :
int provinceid = Convert.ToInt32(DropDownList1.SelectedValue);
DataSet dsCity = SelectCity(provinceid);
DropDownList2.DataSource = dsCity;
DropDownList2.DataTextField = "CityID";
DropDownList2.DataValueField = "CityName";
DropDownList2.DataBind();


SelectCity(provinceid);
هم یک تابع هست که برای گرفتن اطلاعات از بانک هست که تعریف می کنید و می تونه یک dataset رو برگردونه.

البته این ساده ترین روش بود و روش های زیادی وجود داره.

موفق باشید.

مهدی رحیم زاده
یک شنبه 21 فروردین 1390, 14:52 عصر
ببینید شما یک جدول دارین نام استان ها :
provinceid ,provincename
یک جدول هم دارید برای شهرها:
cityid,cityname,privinceid
که provinceid یک کلید خارجی

تا اینجا که مشکلی نیست.

text کنترل dropdown رو اسم استان و value رو برابر با id استان میزاری.
خاصیتی autopostback کنترل اول رو ture کن و توی selectedindexchanged اینطور میتونی بنویسی :
int provinceid = Convert.ToInt32(DropDownList1.SelectedValue);
DataSet dsCity = SelectCity(provinceid);
DropDownList2.DataSource = dsCity;
DropDownList2.DataTextField = "CityID";
DropDownList2.DataValueField = "CityName";
DropDownList2.DataBind();


SelectCity(provinceid);

هم یک تابع هست که برای گرفتن اطلاعات از بانک هست که تعریف می کنید و می تونه یک dataset رو برگردونه.

البته این ساده ترین روش بود و روش های زیادی وجود داره.
دوست من ممنون بابت توجهتون
اما یک موضوع رو هم توجه کنید که این dropdown ها توی یک gridview قرار دارن . حالا با توحه به اون بگید.آخه من تست کردم داده ها رو خوندم اما نشد که dropdown مربوط به شهرستان ها رو پر کنم .
میشه یک مثال برام بزنید؟
با تشکر

hlikehamed
یک شنبه 21 فروردین 1390, 17:31 عصر
ببخشید gridview رو ندیده بودم.
ببین لینک های زیر کمکی بهت می کنه :

http://forums.asp.net/t/1090489.aspx

-----------
http://www.mikepope.com/blog/displayblog.aspx?permalink=1708
http://www.mikepope.com/blog/displayblog.aspx?permalink=1709

---------
http://geekswithblogs.net/azamsharp/archive/2006/09/15/91308.aspx

-----------

palang sorati
یک شنبه 21 فروردین 1390, 21:03 عصر
... این dropdown ها توی یک gridview قرار دارن ...

سوال مبتدی :
دوست گرامی از چه طریقی این کار رو انجام دادید ؟ چه طوری می شه که یک کنترلی مثل TextBox و یا CheckBox رو توی ستون های GridView قرار داد ؟ البته با توجه به تصویر زیر :

karim orooji
یک شنبه 21 فروردین 1390, 22:32 عصر
سوال مبتدی :
دوست گرامی از چه طریقی این کار رو انجام دادید ؟ چه طوری می شه که یک کنترلی مثل TextBox و یا CheckBox رو توی ستون های GridView قرار داد ؟ البته با توجه به تصویر زیر :
سلام دوست عزیز بار ها و بارها در این مورد توی این سایت بحث شده اما کجاست دقت
از دوستمون جناب iranmsb (http://barnamenevis.org/member.php?18292-iranmsb) هم عذر خواهی میکنم توی این پست شما جواب دوستمون رو میدم

ابتدا یک گرید به برنامه اضافه میکنیم

طبق این عکس
به قسمت edit columns رفته
http://barnamenevis.org/attachment.php?attachmentid=68561&d=1302456235
و طبق شماره گذاری در عکس ایجاد یک template file میکنید
http://barnamenevis.org/attachment.php?attachmentid=68559&d=1302456229
پس از ایجاد کردن template file
طبق عکس به قسمت edit template رفته و نمای ظاهری رو تماشا میکنید
البته در ایجه قسمت های مختلف رو برای شما با فلش مشخص کردم
http://barnamenevis.org/attachment.php?attachmentid=68560&d=1302456232
حالا شما میتونید check box textbox و....
هرچه که میخاهید رو اضافه کرده


سوالی بود مطرح کن


موفق باشی

Himalaya
دوشنبه 22 فروردین 1390, 01:34 صبح
سلام .......

مهدی رحیم زاده
شنبه 27 فروردین 1390, 11:00 صبح
با سلام و تشکر از تمامی دوستان عزیز
بنده موارد رو انجام دادم و کدی که نوشتم اینه:
protected void GstDropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList StatDrop = (DropDownList)sender;
int iRow = ((GridViewRow)(StatDrop.Parent.BindingContainer)). RowIndex;
//
DropDownList CityDrop = (DropDownList)GridView1.Rows[iRow].Cells[1].FindControl("GridCtyDropDownList");
SqlDataSource Citysqlds = (SqlDataSource)GridView1.Rows[iRow].Cells[1].FindControl("GridCitySqlDataSource");
Citysqlds.SelectCommand = "SELECT CtyCode, CtyName FROM S2_TempCity Where StatCode=@StatCode ORDER BY CtyName";
Citysqlds.SelectParameters.Add("StatCode", StatDrop.SelectedValue);
CityDrop.DataTextField = "CtyName";
CityDrop.DataValueField = "CtyCode";
CityDrop.DataBind();
}
اما مشکل اینجاست که dropDown دوم که باید پر بشه ، باید مقدار پیش فرض رو هم که قبلا ست شده رو باید نمایش بده یا اصطلاحا باید bind بشه که به خاطر همین این error رو میده:

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
ممنون میشم که راهنماییم کنید.
با تشکر

مهدی رحیم زاده
دوشنبه 29 فروردین 1390, 09:56 صبح
دوستان نميدونن دليل اينكه به اطلاعات بايند شده گير ميده چيه؟
من حتي اين اطلاعات رو برداشتم اما باز هم درست نشد!!!!