PDA

View Full Version : جستجو در DatagridView با استفاده از خانه های آن



Yanehsar
دوشنبه 29 خرداد 1391, 12:57 عصر
سلام دوستان
چطوری میتونیم شرط جستجو را در داخل خود دیتاگرید ویو قرار بدیم؟
یه برنامه دیدم که اطلاعات از بانک بایند میکرد و سطر اول اون خالی بود برای جستجو
یعنی اگه 5 تا فیلد داشتیم میتونستیم هم تک تک و هم به صورت پیشرفته سرچ کنیم
مثلا کسانی که نامش با ع شروع میشه فامیلیشون با ت شمارهشون 0912 و...
چطوری میشه خانه اد کرد به دیتاگریدی که از بانک پر میشه و چطوری میشه جستجو نوشت برای اون؟
ممنون میشم توضیح بدهید یا نمونه کد بذارید برام

Yanehsar
دوشنبه 29 خرداد 1391, 18:19 عصر
کسی نمیدونه باید چیکار کرد!؟!؟!؟
اصلا روش اصولی که بشه داخل دیتاگرید جستجو کرد چیه؟!؟که بشه کارهای مثل چاپ و خروجی گرفتن اطلاعات در فایلهای اکسل انجام داد

ahmadreza517
دوشنبه 29 خرداد 1391, 20:32 عصر
به نام تنها برنامه نویس هستی
سلام ,

شما کار با بانک اطلاعاتی آشنایی دارید ؟

Yanehsar
دوشنبه 29 خرداد 1391, 21:13 عصر
به نام تنها برنامه نویس هستی
سلام ,

شما کار با بانک اطلاعاتی آشنایی دارید ؟

سلام بله نه به صورت حرفه ای اما بله
با جستجو کردن داخل بانک هم اشنا هستم مشکل خاصی ندارم که کاربر مقداری رو داخل تکس باکس بریزه و دیتاگرید فیلتر بشه
اما یه برنامه دیدم که از سطر اول دیتاگرید برای جستجو استفاده کرده بود میخوام اینو یاد بگیرم.

ahmadreza517
سه شنبه 30 خرداد 1391, 09:10 صبح
اگه امکانش هست برنامه قرار بدید.

Yanehsar
پنج شنبه 01 تیر 1391, 21:16 عصر
من فقط برنامه نصبی رو جایی دیدم نهایت سعی خودمو بکنم که عکس برنامه رو براتون بذارم.
نمیدونم از دیتا گرید استفاده کرده بودند یا سایر ابزار گرید دات نت.معمولا از تکس باکس برای جستجو استفاده میکنن اما در این برنامه از اولین سطر به عنوان تکس باکس و برای جستجو استفاده شده بود.

Yanehsar
یک شنبه 04 تیر 1391, 22:29 عصر
اگه امکانش هست برنامه قرار بدید.
سلام
تصویراز از برنامه قبلا ازجستجو هستش
88694
استفاده از ایتمهای کد بیمه و نام بیمار برای جستجو.همانطور که میبینید از سطر اول استفاده شده برای جستجو
88695

کسی میتونه نمونه برنامه برام بذاره؟!؟ممنون میشم

samadblaj
جمعه 09 تیر 1391, 21:54 عصر
میتونم با linq برات بنویسمش؟؟؟

samadblaj
جمعه 09 تیر 1391, 22:37 عصر
دوست عزیز Linq نوشتم امیدوارم کمکت کنه.

ببخش نمیتونم پیوست کنم اینترنتم gprs هستش و سرعت مناسبی نداره.




using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace book
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
DataClasses1DataContext db = new DataClasses1DataContext();
var proc = from i in db.authers
select i;
dataGridView1.DataSource = proc;
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
DataClasses1DataContext db = new DataClasses1DataContext();
var proc =(from i in db.authers
where i.firstname.Contains (textBox1 .Text ) && i.lastname .Contains(textBox2.Text)
select i);
dataGridView1.DataSource = proc;
}

private void textBox2_TextChanged(object sender, EventArgs e)
{
DataClasses1DataContext db = new DataClasses1DataContext();
var proc = (from i in db.authers
where i.lastname.Contains(textBox2.Text) && i.firstname.Contains(textBox1.Text)
select i);
dataGridView1.DataSource = proc;

}
}
}




موفق باشی

majid.gymnast
شنبه 10 تیر 1391, 08:52 صبح
دوست عزیز میتونی از کلاس bindingsource شی بسازی؛ بعدش کوئری رو به این شی بایند کنی و بعد دیتاگریدویو رو به این شی بایند کنی. و برای جستجو هم کلاس bindingsource یه پراپرتی داره به نام فیلتر که میتونی از اون استفاده کنی.

Mahmoud.Afrad
چهارشنبه 14 تیر 1391, 08:17 صبح
فکر نمیکنم ایشون توی فیلتر کردن مشکلی داشته باشند فقط نمیدونند سطر اول رو خالی بذارند و ازش در جستجو کمک بگیرند.
من یک نمونه کد میذارم
static string filter;
static string name;
static string lastname;
DataView dv;

private void button17_Click(object sender, EventArgs e)
{
dt.Clear();
//add first row
dt.Rows.Add();
da = new SqlDataAdapter("select * from tbl", connection);
//fill dt from row 2
da.Fill(dt);
//fill first row
dt.Rows[0]["id"] = 0;
dt.Rows[0]["name"] = "Type name here for search";
dt.Rows[0]["lastname"] = "Type lastname here for search";
dv = new DataView(dt);
dataGridView1.DataSource = dv;

da.Dispose();
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == 0)
{
name = Convert.ToString(dataGridView1.Rows[0].Cells["name"].Value);
lastname = Convert.ToString(dataGridView1.Rows[0].Cells["lastname"].Value);

if (!string.IsNullOrEmpty(name) && name != "Type name here for search")
filter += "name LIKE '" + name + "%' and ";
if (!string.IsNullOrEmpty(lastname) && lastname != "Type lastname here for search")
filter += "lastname LIKE '" + lastname + "%' AND ";
filter += "1=1 OR id=" + 0;
dv.RowFilter = filter;

filter = name = lastname = "";
filter = name = lastname = null;
}
}

Yanehsar
چهارشنبه 21 تیر 1391, 22:43 عصر
فکر نمیکنم ایشون توی فیلتر کردن مشکلی داشته باشند فقط نمیدونند سطر اول رو خالی بذارند و ازش در جستجو کمک بگیرند.
من یک نمونه کد میذارم
static string filter;
static string name;
static string lastname;
DataView dv;

private void button17_Click(object sender, EventArgs e)
{
dt.Clear();
//add first row
dt.Rows.Add();
da = new SqlDataAdapter("select * from tbl", connection);
//fill dt from row 2
da.Fill(dt);
//fill first row
dt.Rows[0]["id"] = 0;
dt.Rows[0]["name"] = "Type name here for search";
dt.Rows[0]["lastname"] = "Type lastname here for search";
dv = new DataView(dt);
dataGridView1.DataSource = dv;

da.Dispose();
}

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == 0)
{
name = Convert.ToString(dataGridView1.Rows[0].Cells["name"].Value);
lastname = Convert.ToString(dataGridView1.Rows[0].Cells["lastname"].Value);

if (!string.IsNullOrEmpty(name) && name != "Type name here for search")
filter += "name LIKE '" + name + "%' and ";
if (!string.IsNullOrEmpty(lastname) && lastname != "Type lastname here for search")
filter += "lastname LIKE '" + lastname + "%' AND ";
filter += "1=1 OR id=" + 0;
dv.RowFilter = filter;

filter = name = lastname = "";
filter = name = lastname = null;
}
}

سلام من تقریبا از کدهای شما استفاده کردم

if (e.RowIndex == 0)
{
MessageBox.Show(dgw.Rows[0].Cells["family"].Value.ToString());
dv.RowFilter = "family like '%" + dgw.Rows[0].Cells["family"].Value.ToString()+ "%'";
dgw.DataSource = dv;
}

جند تا مشکل داره یکی اینکه تا وقتی بیرون از سطر کلید نکنم جواب کارمو نمیده اما خودتون که میدونید like که در سرچ استفاده میکنیم کاراکتر به کاراکتر فیلتر میکنه من از این قابلیت میخوام استفاده کنم
دوم اینکه با موافقیت فیلتر میشه اما بعد از فیلتر شدن سطر اولی که اضافه کردیم پاک میشه

mehdidanesh
پنج شنبه 22 تیر 1391, 09:55 صبح
دوست عزیز منظورت از dt چیه؟

Yanehsar
پنج شنبه 22 تیر 1391, 10:38 صبح
DataTable
تو این قسمت از DataTable استفاده کردم اما خودم معمولا از dataview , dataset استفاده میکنم

Mahmoud.Afrad
پنج شنبه 22 تیر 1391, 10:43 صبح
دوست عزیز منظورت از dt چیه؟
منظور دیتاتیبل هست

محمد قانعی
دوشنبه 07 تیر 1395, 00:10 صبح
جند تا مشکل داره یکی اینکه تا وقتی بیرون از سطر کلید نکنم جواب کارمو نمیده اما خودتون که میدونید like که در سرچ استفاده میکنیم کاراکتر به کاراکتر فیلتر میکنه من از این قابلیت میخوام استفاده کنم
دوم اینکه با موافقیت فیلتر میشه اما بعد از فیلتر شدن سطر اولی که اضافه کردیم پاک میشه
منم دقیقا همین مشکل رو دارم.
اگه کسی هست بدونه باید چیکار کرد ممنون میشم بگه .

ژیار رحیمی
دوشنبه 07 تیر 1395, 02:10 صبح
سلام
تصویراز از برنامه قبلا ازجستجو هستش
88694
استفاده از ایتمهای کد بیمه و نام بیمار برای جستجو.همانطور که میبینید از سطر اول استفاده شده برای جستجو
88695

کسی میتونه نمونه برنامه برام بذاره؟!؟ممنون میشم

دوست گرامی تصویر گریدی که گذاشتی گرید کنترل Microsoft نیست .ممکنه گرید شرکت Telerik یا شرکن Dev باشه ویا سایر ..من خودم از گرید Telerik وDev استفاده کردم بدون کد نویسی خاصی قابلیت جستجو در سطح گرید رو به همان شیوه در تصویر به شما میدهد.اگر بخوای همین شیوه رو پیاده سازی کنی باید گرید پیشفرض Microfost رو توسعه ش بدی.برای توسعه هم نمونه کد زیاد هست بگردی کدهای لازم رو پیدا میکنی.