PDA

View Full Version : مشکل کاراکتر فارسی در کمبوباکس های مرتبط به هم



farnoosh66
یک شنبه 05 آبان 1392, 11:05 صبح
با سلام
دوستان من 3تا کمبوباکس مرتبط به هم دارم که با انتخاب مقدار کمبو اول ،مقدار کمبوی دوم و ... تغییر میکنه
(مثلا کمبوی اول که کمبوی استان هست وقتی انتخاب میشه تهران، کمبوی دوم شهر های تهران رو فقط فیلتر میکنه و نمایش میده)
مشکلم اینه که وقتی کاراکتر لاتین یا عدد وارد دیتابیسم میکنم تست میکنم درسته، ولی وقتی اسم شهر فارسی مینویسم هی تو انتخابای مختلف این خطارو می ده.

112274

اینم کد یدونه از کمبوباکس ها:



private void cmbOstan_SelectedIndexChanged(object sender, EventArgs e)
{
if (flag_ostan == 1)
{
int x = sql.search("select ID from tblOstan where nam='" + cmbOstan.Text.Trim() + "'");
DataSet ds = new DataSet();
ds = sql.fill("select * from tblCty where xOstan=" + x.ToString());
cmbCty.DataSource = ds.Tables["hi"];
cmbCty.DisplayMember = "nam";
cmbCty.ValueMember = "nam";
flag_cty = 1;
}

veniz2008
یک شنبه 05 آبان 1392, 11:38 صبح
سلام.
سبک کوئری نوشتن شما سال هاست که منسوخ شده دوست عزیز.(براحتی قابل هـــک شدن هست). از پارامترها استفاده کنید.
دلیلش اینه که چیزی برگشت داده نمیشه و شما میخوای اونو به int تبدیل کنی. مشخصه که خطا رخ میده.
به سبک خودتون :
قبل از رشته هایی که سرچ می کنید یک N (به همین شکل با حرف بزرگ) بذارید. مثلا :

int x = sql.search("select ID from tblOstan where nam=N'" + cmbOstan.Text.Trim() + "'");
راستی به نظرم باید در خاصیت های valuemember و displaymember هم تجدید نظر کنید. معمولا valuemember رو برابر با کد استان قرار میدن نه اینکه هر دو مورد رو بر روی یک فیلد یکسان تنظیم کنند.
موفق باشید.

Mahmoud.Afrad
یک شنبه 05 آبان 1392, 18:14 عصر
با وجود ValueMember نیازی نیست برای بدست آوردن id استان کوئری بزنید. برای راهنمایی بیشتر کد پر کردن کمبوباکس استان رو بزارید.

alireza.tabesh
یک شنبه 05 آبان 1392, 21:52 عصر
ComboBox.DataSource = objDataset;
ComboBox.DisplayMember = "objValue";
ComboBox.ValueMember = "objId";