مشکل جستجو (فیلتر) دیتاتیبل با حرف (ی)فارسی
باسلام
دیتاتیبلی داریم که از یک جدول در sql پر می شه و بخاطر یک سری ملاحضات قصد داریم این اطلاعات را درون datatable فیلتر کنیم
و از این دستور استفاده می کنم :
DataTable.Select("names like '%" TextBox2.Text "%'")
همه چیز خوب پیش می ره تا زمانی که می رسیم به حرف ( ی ) فارسی ،
وموقعیکه این حرف در تکست باکس مربوط به جستجو نوشته می شه دیگه هیچ ردیفی نمایش داده نمی شه
در کوئری با قراردادن حرف انگلیسی (N) در ابتدای فیلد مورد جستجو مشکل حل می شد:
SELECT FROM Students WHERE LastName LIKE N"%'+Nmae+'%"
اما در جستجو در داخل دیتاتیبل جواب نمی ده
آیا راه حلی به ذهنتون می رسه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
نقل قول: مشکل جستجو (فیلتر)دیتاتیبل با حرف (ی)فارسی
من از این دستور جستجو استفاده میکنم تو فرم تو حروف فارسی قشنگ جواب میگیرم.
switch (comboBox1.Text)
{
case "نام":
{
query = "select * from Table1 where name like N'%" + textBox1.Text + "%'";
break;
}
case "نام خانوادگی":
{
query = "select * from Table1 where last like N'%" + textBox1.Text + "%'";
break;
}
case "سال":
{
query = "select * from Table1 where convert(varchar,year) like N'%" + textBox1.Text + "%'";
break;
}
default: { break; }
ولی تا حالا داخل dataset امکتحان نکردم و چون موقع جستجو با این حروف "ی" با مشکل بر خورد میکنید چون در لغت عربی موجود نیست عمل جستجو رو انجام نمیده.
نقل قول: مشکل جستجو (فیلتر)دیتاتیبل با حرف (ی)فارسی
اساتید پیشنهادی ندارند ؟؟؟؟؟؟
نقل قول: مشکل جستجو (فیلتر)دیتاتیبل با حرف (ی)فارسی
سلام
دلیل این مشکل اینه که حرف ی بصورت عربی ي (Shift + x) در دیتابیس ثبت میشه . راه حلش هم اینه که موقع جستجو چک کنی وقتی حرف ی زده شد بجاش ي رو به متن مورد نظرت اضافه کنه مثلا بجای کلمه علی کلمه علي تولید بشه
نقل قول: مشکل جستجو (فیلتر)دیتاتیبل با حرف (ی)فارسی
حروف ی و ک هردوشون مشکل دارند زمانیکه ی و ک بصورت عربی هستند
بهنره ابتدا تبدیل به معادل فارسی شده و توی دیتابیس ذخیره کنید
public ToFarsiChar(string str)
{
return str.Replace("ی", "ی").Replace("ک", "ک");
}
ی اولی میشه عربی و ی دومی میشه فارسی
اگر توی کنترل پنل زبان ویندوز یا یونی کد رو به عربی تغییر بدید میتونید ی عربی رو جایگذین گنید تا صحیح تر بشه ی عربی دوتا نقطه زیرش هست
نقل قول: مشکل جستجو (فیلتر)دیتاتیبل با حرف (ی)فارسی
نقل قول:
نوشته شده توسط
ali_md110
حروف ی و ک هردوشون مشکل دارند زمانیکه ی و ک بصورت عربی هستند
بهنره ابتدا تبدیل به معادل فارسی شده و توی دیتابیس ذخیره کنید
public ToFarsiChar(string str)
{ return str.Replace("ی", "ی").Replace("ک", "ک");
}
ی اولی میشه عربی و ی دومی میشه فارسی
اگر توی کنترل پنل زبان ویندوز یا یونی کد رو به عربی تغییر بدید میتونید ی عربی رو جایگذین گنید تا صحیح تر بشه ی عربی دوتا نقطه زیرش هست
ممنون از پاسختون
من از این ترفند استفاده کرده بودم :
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar.ToString() == "ی")
{
e.KeyChar = Convert.ToChar("ي");
}
}
فقط یه مشکلی هست اونهم اینه که جستجوی ما چند وجهی است یعنی با استفاده از یک سویچ می خواهیم کاری کنیم که از یک کادر متن بشه از چند تا جدول جستجو کرد
و بنابراین مشکل یاد شده تنها در یک جدول پیش میاد و بقیه جداول که مشکلی با حرف ی ندارند این بار دچار مشکل می شن
من خواستم در سمت سرور این کوئری رو اجرا کنم تا همه ( ي )های عربی رو به ی فارسی تبدیل کنم کوئری اجرا می شه اما چیزی تغییر نمی کنه :
update [dbwanta].[dbo].[Courses] set [Name] = Replace([Name],'ي','ی')
به نظرتون چطور می شه تمام اون ی ها رو به فارسی برگردوند؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟
نقل قول: مشکل جستجو (فیلتر)دیتاتیبل با حرف (ی)فارسی
ویا اینکه می شه کاری کرد تا این کد بجای اینکه دررویداد KeyPress کادر متن باشه ، تبدیلش کنیم به یه متد که هر موقع لازم داشتیم ازش استفاده کنیم :متفکر:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar.ToString() == "ی")
{
e.KeyChar = Convert.ToChar("ي");
}
}
نقل قول: مشکل جستجو (فیلتر)دیتاتیبل با حرف (ی)فارسی
نقل قول:
نوشته شده توسط
ali_md110
حروف ی و ک هردوشون مشکل دارند زمانیکه ی و ک بصورت عربی هستند
بهنره ابتدا تبدیل به معادل فارسی شده و توی دیتابیس ذخیره کنید
public ToFarsiChar(string str)
{
return str.Replace("ی", "ی").Replace("ک", "ک");
}
ی اولی میشه عربی و ی دومی میشه فارسی
اگر توی کنترل پنل زبان ویندوز یا یونی کد رو به عربی تغییر بدید میتونید ی عربی رو جایگذین گنید تا صحیح تر بشه ی عربی دوتا نقطه زیرش هست
ممنون علی آقا جواب داد
به این شکل نوشتم :
recipe.DefaultView.RowFilter = string.Format(@"[_RowString] like '%" + ToFarsiChar(textBox1.Text )+ "%' ");
هورااا ممنونم از همتون درس شدددددددددددددددددددددددد ددددددددددددددددددددددددد دددددددددد