PDA

View Full Version : جستجو در دیتاگریدویو



Yanehsar
جمعه 18 فروردین 1391, 12:43 عصر
سلام دوستان من با استفاده از دستورات زیر اطلاعات بانکمو در دیتا گرید ویو قرار میدم



OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
DataView dv = new DataView();
da = new OleDbDataAdapter("select ID,namebimar,IDbimar,Sazman_bime,Name_khadmat,Date _noskheh,Date_Valid,Tkoli,Tsazman,TBimar from Vizit order by Date_noskheh Desc", con);
da.Fill(ds, "Vizit");
dv.Table = ds.Tables["Vizit"];
dgw.DataSource = dv;

و با استفاده از دستور زیر داخل بانکم جستجو میکنم بدون مشکل


switch (cbselect.Text)
{
case "نام ونام خانوادگی":
dv.RowFilter = "namebimar like '%" + txtserech.Text + "%'";
dgw.DataSource = dv;
break;
case "شماره بیمه":
dv.RowFilter = "IDbimar like '%" + txtserech.Text + "%'";
dgw.DataSource = dv;
break;
case "سازمان بیمه":
dv.RowFilter = "Sazman_bime like '%" + txtserech.Text + "%'";
dgw.DataSource = dv;
break;
case "تاریخ نسخه":
dv.RowFilter = "Date_noskheh like '%" + txtserech.Text + "%'";
dgw.DataSource = dv;
break;
case "نام خدمت":
dv.RowFilter = "Name_khadmat like '%" + txtserech.Text + "%'";
dgw.DataSource = dv;
break;
}

اطلاعاتی که در بانکم رشته ای هستش به راحتی کاراکتر به کارکتر جستجو و فیلتر میشه تا اینجا مشکلی ندارم
اما میخوام وقتی داده ای که عددی هستشو فیلتر کنم خطا میده از چه کدی باید استفاده کنم؟الان Date_noskheh من از نوع عددی هستش چیکار باید بکنم به نظرتون؟

morteza271
جمعه 18 فروردین 1391, 12:57 عصر
فکر نمیکنم به این دستور نیازی باشه ::
Convert.ToInt32
لاطم نیست تبدیلش کنید خودش احتمالا درست باشه.

p.yazdkhasti
جمعه 18 فروردین 1391, 13:07 عصر
سلام
لطفا یک مثال از فرمت ذخیره سازی تاریخ یا به عبارت دیگر Date_noskheh در نرم افزار خود ذکر کنید. در کد بالای شما استفاده از Convert.ToInt32 غیر ضرروی است زیرا بعد از اتصال آن به String ها کنار آن دوباره به صورت Implicit به String تبدیل یا Cast می شود.

Yanehsar
جمعه 18 فروردین 1391, 13:20 عصر
سلام مجدد من استباه کردم کد اول اشتباه بود اصل کدها اینه که سی شارپ خطا گرفت من از convert.toint32 استفاده کردم که یازم اجرا نشدش
فیلد من از نوع عددی هستش یعنی تاریخ 1390/12/12 رو داخل بانک به صورت 13901212 ذخیره میکنه چیکار کنم به نظرتون؟؟؟

p.yazdkhasti
جمعه 18 فروردین 1391, 13:59 عصر
سلام
نوع ستون Date_noskheh را در Dataset (در صورتی که String نمی باشد) به String تبدیل نمایید.

Yanehsar
جمعه 18 فروردین 1391, 22:53 عصر
سلام
نوع ستون Date_noskheh را در Dataset (در صورتی که String نمی باشد) به String تبدیل نمایید.
سلام چطوری باید اینکار رو انجام بدم؟میشه برام کدهای مربوطشو بذارید؟

majidrezaei2007
جمعه 18 فروردین 1391, 23:23 عصر
برای مقایسه مقادیر عددی نیازی نیست داخل ' ' بزارید . اینو در نظر داشته باشید .
مثلا
dv.RowFilter = "ID = 1"

ali_habibi1384
جمعه 18 فروردین 1391, 23:29 عصر
1- از دستور like استفاده نكنيد.(اين دستور براي متغييرهاي رشته اي ميباشد)
2- از علامت % استفاده نكنيد (اين علامت براي استفاده از دستور like است)
3- همونظور كه دوستمون گفت تك كوتيشن ' لازم نيست استفاده كنيد زيرا اين كاراكتر براي استفاده از متغيرهاي رشته اي ميباشد نه عددي
درضمن نياز نبود براي ذخيره تاريخ اونو به عدد تبديل كني. با همون نوع nvarchar كارت را ميفتاد.

Yanehsar
شنبه 19 فروردین 1391, 20:23 عصر
1- از دستور like استفاده نكنيد.(اين دستور براي متغييرهاي رشته اي ميباشد)
2- از علامت % استفاده نكنيد (اين علامت براي استفاده از دستور like است)
3- همونظور كه دوستمون گفت تك كوتيشن ' لازم نيست استفاده كنيد زيرا اين كاراكتر براي استفاده از متغيرهاي رشته اي ميباشد نه عددي
درضمن نياز نبود براي ذخيره تاريخ اونو به عدد تبديل كني. با همون نوع nvarchar كارت را ميفتاد.

سلام مرسی با تغییر فیلدم به رشته ای کارام راه افتاد اما میشه یه روش استاندارد برای جستجو و فیلتر کردن دیتاگرید معرفی کنید؟
من یه برنامه دیدم که ردیف اول دیتاگرید خالی هستش و با تایپ هر کاراکتر داخل فیلد متناضر آن دیتا گرید فیلتر میشد هم تک شرط جواب میداد هم چند شرطی
مثلا نام خانوادگی با تایپ حرف م هر کسی که نامش با م شروع میشد می امد و با تایپ تاریخ 139012 کسانی که نامش م و تاریخشون 139012 هستش نشون میداد
چطور میشه اینکار رو انجام دادش؟؟؟؟؟؟

p.yazdkhasti
شنبه 19 فروردین 1391, 23:40 عصر
سلام مرسی با تغییر فیلدم به رشته ای کارام راه افتاد اما میشه یه روش استاندارد برای جستجو و فیلتر کردن دیتاگرید معرفی کنید؟
من یه برنامه دیدم که ردیف اول دیتاگرید خالی هستش و با تایپ هر کاراکتر داخل فیلد متناضر آن دیتا گرید فیلتر میشد هم تک شرط جواب میداد هم چند شرطی
مثلا نام خانوادگی با تایپ حرف م هر کسی که نامش با م شروع میشد می امد و با تایپ تاریخ 139012 کسانی که نامش م و تاریخشون 139012 هستش نشون میداد
چطور میشه اینکار رو انجام دادش؟؟؟؟؟؟

سلام
شما می توانید از کنترل های Grid شرکت های Telerik و یا ِDevExpress در نرم افزار خود استفاده نمایید. این کنترل ها Filtering اطلاعات را با سادگی بیشتری انجام می دهند و امکانات بیشتری را در اختیار شما قرار می دهند. برای اطلاعات بیشتر در مورد این کنترل ها می توایند به سایت آن ها مراجعه نمایید.

Yanehsar
یک شنبه 20 فروردین 1391, 09:31 صبح
سلام
شما می توانید از کنترل های Grid شرکت های Telerik و یا ِDevExpress در نرم افزار خود استفاده نمایید. این کنترل ها Filtering اطلاعات را با سادگی بیشتری انجام می دهند و امکانات بیشتری را در اختیار شما قرار می دهند. برای اطلاعات بیشتر در مورد این کنترل ها می توایند به سایت آن ها مراجعه نمایید.

سلام از این کنترل استفاده نکردم لینک دانلود و آموزش(مخصوصا آمورش) این کنترل ر میتونید برام بذارید؟ممنون

ali_habibi1384
یک شنبه 20 فروردین 1391, 20:43 عصر
استانداردش مثل جستجوهاي گوگل. متن رو تايپ كني بعد بياد توي همه فيلدهاي اطلاعاتي جستجو كنه نه فقط فيلد متناظر

Yanehsar
یک شنبه 20 فروردین 1391, 20:48 عصر
کسی نمیتونه کمکم کنه؟؟؟؟؟
چطور میتونیم داخل دیتاگربد جستجو کنیم؟؟؟؟ابزار گرید که دوستم p.yazdkhasti گفت رو چطور استفاده کنیم؟

m_u3fi
شنبه 16 اردیبهشت 1391, 10:54 صبح
برای استفاده از این ابزار ها که دوستمون گفت باید Telerik و یا ِDevExpress رو تهیه کنی روی VS نصب کنی .بعد توی Toolbox یه Tab جدید به اسمشون ایجاد میشه و تمام کنترل های این کامپوننت ها نمایش داده میشه اونوقت می تونی از کنترل گریدش که فیلترینگ هم داره استفاده کنی