PDA

View Full Version : کار با dropdownlist



computer _ student
جمعه 07 بهمن 1390, 11:28 صبح
پروژه من یک سایت فروش قطعات کامپیوتری هست
http://s2.picofile.com/file/7267500535/pic2.jpg
توی این قسمت مدیر سایت باید بتونه قطعات جدید را درج کنه. توی اون لیست باکس هم نوع قطعات از جدول type بازیابی میشه
مشکل اینجاست که هر نوعی را که انتخاب میکنم باز هم قطعه با نوع اول که کدش 1 هست درون جدول درج میشه به عبارت دیگه دستوری که نوشتم نمیتونه به صورت درست نوع انتخابی را تشخیص بده. مشکل از کجاست
دستوراتی که کد نوع را بدست می آورد:
int t;
string q2="select type# from type where type=@t";
SqlCommand com2 = new SqlCommand(q2, con1);
SqlParameter prm6 = new SqlParameter("@t", SqlDbType.NVarChar);
com2.Parameters.Add(prm6);
com2.Parameters["@t"].Value =DropDownList1.SelectedItem.text;
con1.Open();
DataTable tb = new DataTable();
tb.Load(com2.ExecuteReader());
con1.Close();
t = Convert.ToInt32(tb.Rows[0][0]);

اوبالیت به بو
جمعه 07 بهمن 1390, 12:24 عصر
درود

شما نوشته اید:

com2.Parameters["@t"].Value =DropDownList1.SelectedItem.text;

اما شما مقدار Value آیتم انتخابی رو میخواهید. باید فیلدی از نوع مثلا int در جدول DB ایجاد کنید و کدتون رو به اینصورت تغییر بدید:

com2.Parameters["@t"].Value =(int) DropDownList1.Selectedvalue;

vahid.ch013
جمعه 07 بهمن 1390, 12:28 عصر
کدهای bind شدن DropDOwnList رو درون Ispostback قرار بدید:
زمانی کهpage_Load فایر میشه همون مقدار اول DropDownList رو انتخاب میکنه.
if(!IsPostBack)
{
Code...
}

computer _ student
جمعه 07 بهمن 1390, 12:33 عصر
درود

شما نوشته اید:

com2.Parameters["@t"].Value =DropDownList1.SelectedItem.text;

اما شما مقدار Value آیتم انتخابی رو میخواهید. باید فیلدی از نوع مثلا int در جدول DB ایجاد کنید و کدتون رو به اینصورت تغییر بدید:

com2.Parameters["@t"].Value =(int) DropDownList1.Selectedvalue;

سلام
پارامتر من از نوع nvarchar هست چرا باید مقداری از نوع int را به اون بدم؟
یه سوال دیگه
selected item
با
selected value
فرق میکنه؟ اگه فرق داره لطفا برام توضیح بدید.
ممنون میشم

vahid.ch013
جمعه 07 بهمن 1390, 13:24 عصر
com2.Parameters["@t"].Value =DropDownList1.SelectedItem.Tostring();

اوبالیت به بو
دوشنبه 10 بهمن 1390, 21:24 عصر
درود


پارامتر من از نوع nvarchar هست چرا باید مقداری از نوع int را به اون بدم؟

معمولا برای اینجور عملیات که حتما باید یک آیتم از یک لیست انتخاب بشه این کار رو انجام می دن. اگر Text گرفتید مشکلی پیش نخواهد اومد اما برای اینکه حجم DB کاهش پیدا بکنه یک جدول جداگانه می سازند با 2 فیلد ID و Name و ستون ID رو به فیلد متناظر اون در جدول اصلی لینک می دن.


یه سوال دیگه
selected item
با
selected value
فرق میکنه؟ اگه فرق داره لطفا برام توضیح بدید.
ممنون میشم

در این مورد شما که فیلد از نوع رشته ای هست خیر. اما اگر از روشی که توضیح دادم استفاده کنید بله فرق می کنه. چون در اون صورت شما به کاربر مقدار رشته ای رو نشون می دید اما پشت صحنه با فیلد ID کار می کنید. در هنگام تنظیم کردن DropDownList شما DataTextField رو برابر ستون Name و مقدار DataValueField رو برابر فیلد ID قرار می دید.