PDA

View Full Version : dropdownlist



niloofar84
چهارشنبه 02 آذر 1384, 19:28 عصر
سلام فکر میکنم که سوالم تکراریه ولی توی topic ها search کردم و نیافتمش! به هر حال اساتید لطفا منو ببخشن ! من در pageload ، یک dropdownlist رو به بانک bind میکنم .چه طوری میتونم توی dropdown یک item با text و value ی "ALL" داشته باشم ؟ یعنی اضافه بر item هایی که از database ایجاد شده.

Behrouz_Rad
چهارشنبه 02 آذر 1384, 21:56 عصر
بعد از فراخوانی متد DataBind کنترل DropDownList بنویسید:


DropDownList1.Items.Add("myItem")

موفق باشید.

Identifier
پنج شنبه 03 آذر 1384, 08:08 صبح
بعد از فراخوانی متد DataBind کنترل DropDownList بنویسید:


DropDownList1.Items.Add("myItem")

موفق باشید.
سلام دوستان من برای انجام این کار از این روش استفاده کردم که توی stored Procedure اومدم به یک مقدار َALL جدولم رو union کردم به نظر شما کدوم روش استاندارد تر هست


CREATE PROCEDURE SP_SELECT_PRODUCT_BRAND_PRICEPACKAGE
@Cid int
AS
Select ID,Name from Product_Brand where cid = @cid
union all Select distinct -1 as id1,'All' as name1 from Product_Brand where ID=ID order by id
GO

Behrouz_Rad
پنج شنبه 03 آذر 1384, 08:25 صبح
ایشون گفتند بعد از Bind.
یعنی بعد از واکشی رکوردها از دیتابیس و میخوان آیتمی رو به صورت دستی به DropDownList اضافه کنند.

Identifier
پنج شنبه 03 آذر 1384, 08:29 صبح
آقای راد درست است منظور من این بود برای انجام اینکه بخواهیم یک Item به dropDownlist اضافه کنیم از این دو روش میتونیم استفاده کنیم کدوم منطقی تر به نظر میاد ؟

Behrouz_Rad
پنج شنبه 03 آذر 1384, 08:46 صبح
دوست عزیز من!
دقت بفرمایید.
خانم فرمودند که بعد از عمل Bind و Bind یعنی انتساب داده ها به شی و کلاس به منظور نمایش.

یعنی اضافه بر item هایی که از database ایجاد شده.
این دستور SQL ای که نوشتید ، بعد از Binding معنایی نخواهد داشت.

Identifier
پنج شنبه 03 آذر 1384, 08:51 صبح
حق با شماست من اشتباه برداشت کردم
باز هم از راهنماییتون ممنونم

niloofar84
پنج شنبه 03 آذر 1384, 12:24 عصر
ممنونم آقای راد ببخشید وقتتونو گرفتم . مشکل رو حل کردید حالا مشکل دیگه ای هست( که البته ربطی به اضافه شدن این item جدید نداره و از قبل بوده من الان متوجه شدم) . text ِ تمام item ها همون طور که قرار بود به ستون cat از جدول bind شده و مشکلی نداره.اما value ی تمام item ها رو 1 گرفته!!! در حالی که باید به فیلد id از جدول bind بشن.حتی value ی اون new item رو هم 1گرفته!! ببینید اینطوری به value دسترسی داریم دیگه؟درسته؟! بازهم ممنونم.
DropDownList1.selecteditem.value

Behrouz_Rad
پنج شنبه 03 آذر 1384, 13:46 عصر
دوست عزیز!
بنده قبلا هم در تاپیک دیگه ای خدمت یکی دیگه از دوستان عرض کرده بودم.
یک نکته ی ریز در اینجا وجود داره.
DropDownList ، دو تا خاصیت داره.
1) DataTextField
2) DataValueField

خاصیت DataTextField ، فیلدی رو مشخص می کنه که شما قصد نمایش رکوردهای اون در DropDownList رو دارید.
خاصیت DataValueField ، فیلدی رو مشخص می کنه که می تونیم بگیم به عنوان یک گزینه ی مخفی ، به هر آیتم نسبت داده میشه و قابل مشاهده نیست.
معمولا از این فیلد برای دادن اندیس به آیتم ها استفاده می کنند و فیلد ID رکورد مورد نظر رو در این خاصیت می نویسند.
فرضا جدولی با نام myTable دارید که دارای 2 فیلد به نام های strName و intID است.
2 دستور زیر، مقادیر فیلد strName را در DropDownList نمایش می دهند و همچنین برای هر مقدار، یک اندیس که از فیلد intID استخراج می شود نسبت می دهند:


DropDownList1.DataTextField = "strName"
DropDownList1.DataValueField = "intID"

و اما...
DropDownList ، دو خاصیت مهم دیگر نیز دارد که اکثرا دوستان برنامه نویس در استفاده از آنها دچار اشتباه می شوند.
خاصیت SelectedItem.Text و خاصیت SelectedItem.Value.

خاصیت SelectedItem.Text ، متن گزینه ی انتخاب شده از DropDownList را بر می گرداند و خاصیت SelectedValue.Value برای بازیابی Value گزینه ی انتخاب شده استفاده می شود.

به عنوان مثال ، اگر در رکوردی در فیلد strName آن مقدار "علی" و در فیلد intID مقدار "5" ذخیره شده باشد، فراخوانی خاصیت SelectedItem.Text موجب برگشت مقدار "علی" و فراخوانی خاصیت SelectedItem.Value موجب برگشت مقدار "5" خواهد شد.

برای حل مشکل Value گزینه ی جدید نیز به طریقه ی زیر عمل کنید.
یک متغیر از نوع ListItem ایجاد و خواص Text و Value آن را مقداردهی کنید:


Dim objNewItem As New ListItem
objNewItem.Text = "ali"
objNewItem.Value = "5"
DropDownList1.Items.Add(objNewItem)


اینکه می فرمایید Value تمامی گزینه ها ، 1 است، عجیبه!
شاید فیلد را اشتباه انتخاب کرده باشید یا تمامی مقادیر فیلد ID دارای مقدار 1 هستند.

موفق باشید.

niloofar84
شنبه 05 آذر 1384, 00:56 صبح
مرسی آقای راد واقعا از توضیحاتتون ممنونم..:)
فهمیدم مشکل چی بود! وقتی دکمه رو میزنم صفحه 1 بار postback میشه و از اول load میشه :در pageload از اول dropdown به دیتا بیس ، bind میشه و.... . Selecteditem میشه همون selecteditem که دیفالت ِ خود dropdown هست در نتیجه فرق نمیکنه ما کدوم item رو انتخاب کرده باشیم!!! به هر حال آیتم اول رو که value ی 1 داره به عنوان selecteditem میگیره! توی pageload قبل از عمل ِ bind شدن باید یک شرط بذاریم:if not page.ispostback
درست میشه!