فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
سلام
دوستان عزیز میخوام طوری تو فرمم سرچ داشته باشم که داخل تکست هر حرفی که وارد میشه تمام فیلدهایی که آن حرف را دارند رکوردشان در data grid ظاهر بشه و با هر حرفی که اضافه میشه رکوردها با توجه به حرف اضافه شده در تکست باکس تطبیق پیدا کنند(به قولی سرچ لحظه ای) من یک تازه کار هستم اگر یک نمونه کد هم بزارید ممنون میشم
در ضمن پایگاه داده من sql server 2008 است
نقل قول: سرچ یک فیلد از DATA Base در C#
سلام
privatevoid textbox_textchanged(object sender, EventArgs e)
{
//this.Close();
DataTable dt = (DataTable)this.dataGrid1.DataSource;
DataView dv = newDataView(dt);
dv.RowFilter = "Nume like " + "'%" + textbox.Text + "%'";
dataGrid1.DataSource = dv;
}
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
متشکر دوست عزیز ولی خط زیر در Run Time پیغام خطا میده (Cannot find column [Nume]i ) فیلد مورد نظر را در کجای کد باید مشخص کنم
dv.RowFilter = "Nume like " + "'%" + searchTextBox.Text + "%'";
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
اون Nume که من نوشتم همون اسم فیلده
اون ارور هم میگه که column ی به نام Nume پیدا نمیکنه
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
نقل قول:
نوشته شده توسط
mehran63
سلام
دوستان عزیز میخوام طوری تو فرمم سرچ داشته باشم که داخل تکست هر حرفی که وارد میشه تمام فیلدهایی که آن حرف را دارند رکوردشان در data grid ظاهر بشه و با هر حرفی که اضافه میشه رکوردها با توجه به حرف اضافه شده در تکست باکس تطبیق پیدا کنند(به قولی سرچ لحظه ای) من یک تازه کار هستم اگر یک نمونه کد هم بزارید ممنون میشم
در ضمن پایگاه داده من sql server 2008 است
اینهو فرفره گرید رو فیلتر میکنه.
این رو توو textChange از تکس باکس بنویس:
string text = txtboxFilt.Text;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if(dataGridView1.Rows[i].Cells[0].Value != null)
if (dataGridView1.Rows[i].Cells[0].Value.ToString().IndexOf(text.ToString())!= 0)
{
dataGridView1.Rows[i].Visible = false;
}
//else
//{
// dataGridView1.Rows[i].Visible = true;
//}
}
if (txtboxFilt.Text == "")
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].Visible = true;
}
}
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
دوست عزيز من يك نمونه در لين زير گذاشتم
همينه كه ميخواهي
http://www.barnamenevis.org/sh...&postcount=615
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
نقل قول:
نوشته شده توسط
dr_jacky_2005
اینهو فرفره گرید رو فیلتر میکنه.
این رو توو textChange از تکس باکس بنویس:
string text = txtboxFilt.Text;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if(dataGridView1.Rows[i].Cells[0].Value != null)
if (dataGridView1.Rows[i].Cells[0].Value.ToString().IndexOf(text.ToString())!= 0)
{
dataGridView1.Rows[i].Visible = false;
}
//else
//{
// dataGridView1.Rows[i].Visible = true;
//}
}
if (txtboxFilt.Text == "")
{
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].Visible = true;
}
}
دوست عزیز این روش درسته ولی فقط سطرهای گرید رو پنهان یا نمایان میکنه
اگه بعدا بخوان از DataSource فیلتر شده استفاده کنن که این روش جواب نمیده
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
دوستان نيازي به حلقه نيست
چرا الكي سرعت برنامه خودتون رو پايين مياريد
متد DataView اينكارو ميكنه
فقط كافيه متد Fillter رو صدا بزندي
نمونه كه گذاشتم رو ببينيد
http://www.barnamenevis.org/sh...&postcount=615
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
نقل قول:
نوشته شده توسط
iman_lovely666
البته من از حلقه استفاده نکردم
و با نظر و نمونه برنامه شما موافقم
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
با تشکر از دوستان عزیز
iman_lovely666 جان اون لینکی که گذاشتی خطا میده
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
1 ضمیمه
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
این برنامه کاری که شما میخواین رو انجام میده
1 ضمیمه
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
آقای iman_lovely666 اون سورسی که گذاشتید رو انجام دادم
private void searchTextBox_TextChanged(object sender, EventArgs e)
{
string name = searchTextBox.Text;
dv.RowFilter = string.Format("fn Like '{0}%'", name);
dataGridView1.DataSource = dv;
}
}و در قسمت public partial class دستور DataView dv; را هم نوشتم
ولی وقتی در تکست باکس هر حرفی را وارد میکنم در خطی که dv.RowFilter = string.Format("fn Like '{0}%'", name); وجود دارد پیغام Object reference not set to an instance of an object. را دارم که عکس آن را در پایین گذاشتم
ضمیمه 62993
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
سلام
فکر کنم اسم فیلدت رو درست وارد نکردی
اسم فیلدی که باید بر اساس اون table ات فیلتر بشه چیه؟
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
اسم فیلدم fn هستش تو سورسی که گذاشتم مشخصه
dv.RowFilter = string.Format("fn Like '{0}%'", name);
در پایین کل سورس را گذاشتم
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;
using System.Data.SqlClient;
namespace ConnectioinToSql2008
{
public partial class formConnectioinToSql2008 : Form
{
DataView dv;
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
//SqlDataReader rd;
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
public formConnectioinToSql2008()
{
InitializeComponent();
}
private void formConnectioinToSql2008_Load(object sender, EventArgs e)
{
string str = @"server=Mehran;" + "database=for_work;" + "Integrated Security=True";
conn.ConnectionString = str;
//conn.Open();
cmd.Connection = conn;
cmd.CommandText = @"select * from tinfo";
da.SelectCommand = cmd;
//rd = com.ExecuteReader();
//ds.Clear();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
//rd.Close();
//conn.Close();
} // end method formConnectioinToSql2008_Load
private void addButton_Click(object sender, EventArgs e)
{
//cmd.CommandText = "insert into tinfo(code,fn,ln,jens) valuse ('"
//+ fNTextBox.Text + "','" + lNTextBox.Text + "',";
cmd.CommandText = "insert into tinfo(code,fn,ln,jens) values (@code,@fn,@ln,@jens)";
cmd.Parameters.AddWithValue("@fn", fNTextBox.Text);
cmd.Parameters.AddWithValue("@ln", lNTextBox.Text);
cmd.Parameters.AddWithValue("@code", codeTextBox.Text);
cmd.Parameters.AddWithValue("@jens", jensTextBox.Text);
foreach(Control sayre in this.Controls)
{
if (sayre is TextBox)
(sayre as TextBox).Clear();
}
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
private void codeTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
//faghat addad migire
if ((e.KeyChar != 8) && (e.KeyChar != 13))
e.Handled = !char.IsDigit(e.KeyChar);
// hich klidi gheyr az adad ruye keybord karnemikone
//if (e.KeyChar < '0' || e.KeyChar > '9')
// e.Handled = true;
}
private void searchTextBox_TextChanged(object sender, EventArgs e)
{
string name = searchTextBox.Text;
dv.RowFilter = string.Format("fn Like '{0}%'", name);
}
}
}
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
یک خط کد داره اینو بنویسی حله.bindingsource تو با مشخصه filter بنویس:
کد HTML:
private void txtSchName_TextChanged(object sender, EventArgs e)
{
finsertBindingSource1.Filter = "Fname Like '%" + txtSchName.Text + "%'";
}
نقل قول: فیلتر کردن رکوردهای DataGrid بر اساس عبارت وارد شده در TextBox
این کار رو انجام دادم ولی وقتی کلمه ای که داخل فیلد هستش رو تو تکست باکس وارد میکنم هیچ عکس العملی نشون نمیده