PDA

View Full Version : مشکل در بایند کردن



shahab_gh712
شنبه 13 مرداد 1386, 10:00 صبح
:گریه:سلام دوستان
من یک datagridviwe دارم که هر فیلد آن با یک textbox بایند شده و یک textbox سرچ ، به این صورت که با تایپ حرف اول هر داده ، داده های datagridviwe که با اون حرف شروع میشه فیلتر میشه برای اینکار اول datagridview را DefaultView کردم و مشکل از همین جا شروع شد و دیگه textbox ها بایند نیستند یعنی با کلیک روی datagridview دیگر textbox ها پر نمیشوند. من از این کد ها استفاده کردم :
برای datagridview به DefaultView :


this.dataGridView1.DataSource = this.hesabDataSet.Tables["tblTarafhesab"].DefaultView;


و برای فیلتر کردن در روی داد TexChangedمربوط به textbox سرچ :


this.hesabDataSet.Tables["tblTarafhesab"].DefaultView.RowFilter = "name like '" + this.txtSerchName.Text + "%'";


کمک کنید (خواهشاً سریع)plz

ghafoori
شنبه 13 مرداد 1386, 13:28 عصر
دوست عزیز چرا از bindingsource استفاده نمی کنید تمام تکی باکسها و جدول را به ات بایند کنید بعد با خاصیت فیلتر ان استفاده کنید این روش به راحتی جواب می دهد

shahab_gh712
یک شنبه 14 مرداد 1386, 13:59 عصر
دوست عزیز چرا از bindingsource استفاده نمی کنید تمام تکی باکسها و جدول را به ات بایند کنید بعد با خاصیت فیلتر ان استفاده کنید این روش به راحتی جواب می دهد

با تشکر از شما (ghafoori)
اگر ممکن است بیشتر توضیح دهید آخه من تازه #C را شروع کردم:متفکر: // ضمناً من میخوام اول هر کلمه که در textbox سرچم ، تایپ میشه کلماتی از فیلد مربوطه در datagridview که با اون حرف شروع میشه فیلتر بشه این کار میشه ولی وقتی datagrideview را Defaultview تعریف می کنم دیگه سطری از datagridview که select هست textbox های بایند شده را پر نمیکنه ! کمکم کنید plz :عصبانی++:

ghafoori
یک شنبه 14 مرداد 1386, 15:52 عصر
وقتی datagrideview را Defaultview تعریف می کنم دیگه سطری از datagridview که select هست textbox های بایند شده را پر نمیکنه
چون تکس باکس ها دیگر به Defaultview بایند نیستند شما باید یک bindingsource داخل فرم بزار و تمام تکس باکس ها و دیتاگریدویو را به ان بایند کن و سپس فیلتر را انجام بده

shahab_gh712
دوشنبه 15 مرداد 1386, 00:29 صبح
چون تکس باکس ها دیگر به Defaultview بایند نیستند شما باید یک bindingsource داخل فرم بزار و تمام تکس باکس ها و دیتاگریدویو را به ان بایند کن و سپس فیلتر را انجام بده
اول از همکاری شما ممنون:لبخندساده: /// وقتی textbox ها را بایند کردم خودش یک bindingsource به فرم اضافه کرده ، با این حال من خودم هم یک bindingsource به فرمم اضافه کردم و همه را باهاش بایند کردم ولی هنور مشکل به قوت خود پایدار است !!!!! plz help me

hdv212
دوشنبه 15 مرداد 1386, 01:27 صبح
میشه بگی چطوری textbox هاتو به dataGridView ات بایند کردی ؟

shahab_gh712
دوشنبه 15 مرداد 1386, 08:55 صبح
میشه بگی چطوری textbox هاتو به dataGridView ات بایند کردی ؟

من در اصل textbox ها را با bindingSource بایند کردم ---> از properties مربوط به textbox و Databinding گزینه text

shahab_gh712
دوشنبه 15 مرداد 1386, 21:19 عصر
من هنور مشکلم رو دارم لطفاً کمکم کنید !!!

PC2st
دوشنبه 15 مرداد 1386, 22:14 عصر
برای datagridview به DefaultView :

کد:
this.dataGridView1.DataSource = this.hesabDataSet.Tables["tblTarafhesab"].DefaultView;


برای DataSource یک جدول از جداول دیتاست را انتخاب کنید نه DefaultView !! و فیلدهای آن جدول را به TextBox ها متصل کنید.

shahab_gh712
سه شنبه 16 مرداد 1386, 00:49 صبح
اول از همکاری و توجهتون ممنون

برای DataSource یک جدول از جداول دیتاست را انتخاب کنید نه DefaultView !! و فیلدهای آن جدول را به TextBox ها متصل کنید.

اول از همکاری و توجهتون ممنون
من datagridview را برای این DefaultView کردم تا بتونم سطر های اون را RowFilter کنم

hdv212
سه شنبه 16 مرداد 1386, 02:04 صبح
ببین من اینطوری textBox هامو به datagridVIew بایند میکنم :
در رویداد dataGridView_SelectionChanged یه dataRow از رکوردی که در dataGridView فعال است میسازم و مقدار text مربوط به textBox ها رو با فیلدهای مربوطه از dataRow ست میکنم، اینطوری :

DataTable dt = ds_zamin1.Tables["Zamin_1"];
DataRow currentrow = dataGridView1.CurrentCell.RowIndex

txt_name.Text = currentrow["name"].ToString();
txt_family.Text = currentrow["family"].ToString();
در ضمن بد نیست گزینه ی selection Mode از قسمت properties مربوط به datagridView رو روی fullRowSelect بذاری.

shahab_gh712
سه شنبه 16 مرداد 1386, 13:55 عصر
ببین من اینطوری textBox هامو به datagridVIew بایند میکنم :
در رویداد dataGridView_SelectionChanged یه dataRow از رکوردی که در dataGridView فعال است میسازم و مقدار text مربوط به textBox ها رو با فیلدهای مربوطه از dataRow ست میکنم،

من کد شما را اجرا کردم این ارور را داد ، به نظر هم منطقیه
Cannot implicitly convert type 'int' to 'System.Data.DataRow'

shahab_gh712
سه شنبه 16 مرداد 1386, 13:56 عصر
لازم به ذکر است که ارور در خط دوم است

hdv212
سه شنبه 16 مرداد 1386, 14:27 عصر
اوه، معذرت میخوام، اینو اینطوری اصلاح کن :

DataRow currentrow = dt.Rows[dataGrid1.CurrentCell.RowNumber]; //or dataGridView1.CurrentCell.RowIndex in VS2005

shahab_gh712
سه شنبه 16 مرداد 1386, 17:30 عصر
(hdv616) از همکاریت ممنون // جواب میده ولی توی برنامه من جواب نمیده !!!!!!!!
من وقتی کد زیر را به برنامه ام اضافه می کنم و در این حالت (روش) کد شما هم ارور میده کلافه ام کرده !!!!
-----------------------
plz help me


this.dataGridView1.DataSource = this.hesabDataSet.Tables["tblTarafhesab"].DefaultView;

PC2st
سه شنبه 16 مرداد 1386, 17:39 عصر
من datagridview را برای این DefaultView کردم تا بتونم سطر های اون را RowFilter کنم
احتیاجی به اینکار نیست، اگر جدول رو به DataGridView وصل کنی، خودش از خاصیت DefaultView استفاده میکنه و میتونی از RowFilter هم استفاده کنی.

shahab_gh712
سه شنبه 16 مرداد 1386, 19:52 عصر
احتیاجی به اینکار نیست، اگر جدول رو به DataGridView وصل کنی، خودش از خاصیت DefaultView استفاده میکنه و میتونی از RowFilter هم استفاده کنی.
من این کار رو کردم ولی جواب نداده اگه ممکنه کد مربوطه را بنویسید (با کمال تشکر)

PC2st
سه شنبه 16 مرداد 1386, 20:09 عصر
به شکل زیر یک دیتاگریدویو را به دیتاتیبل وصل کردم:


this.logDataGridView.DataSource = this.logDataTable;


کاربر باید یک مقدار رو از comboBox انتخاب میکرد و دیتاگریدویو بر اساس آن انتخاب، فیلتر میشد، پس توسط تابع زیر، عملیات فیلتر کردن رو انجام میدادم:


private void CustomizeFilter(ComboBox control, string field)
{
if(control.SelectedIndex != 0)
this.logDataTable.DefaultView.RowFilter = field + " = '" + (string)control.SelectedItem + "'";
else
this.logDataTable.DefaultView.RowFilter = "";
}

پارامتر اول که به متد فرستاده میشه، comboBox هست و پارامتر دوم نام فیلد.

shahab_gh712
چهارشنبه 17 مرداد 1386, 09:13 صبح
pc2st.ir متشکر // من روش شما را تست کردم در مورد فیلتر کردن مشکلی نداشت ولی باز هم با اولین فیلتر که انجام میشد textbox ها دیگه بایند نبودند. یعنی متن داخل textbox ها که باید با عوض شدن خط select از datagridview عوض شود ، باز هم text داخل آنها همان text خط اول datagridview بود. که حتی با فیلتر شدن دیگه اون خط تو datagrideview نمایش داده نمیشد ! ضمناً دیگه با کلیک کردن روی خط های دیگر datagridview متن داخل textbox ها ثابت بود . لطفاً راهنمایی کنید

ghafoori
چهارشنبه 17 مرداد 1386, 10:29 صبح
به این مثال یک نگاهی بیامداز
10114

shahab_gh712
چهارشنبه 17 مرداد 1386, 14:37 عصر
ghafoori جان مثال خیلی خوبی بود خیلی خیلی ممنون مشکلم حل شد .
من از این کد استفاده کردم:


this.tblTarafhesabBindingSource.Filter = "name LiKE '" + this.textBox2.Text + "%'";

am_abbas65
دوشنبه 22 مرداد 1386, 23:50 عصر
خوب بجای اینکه این همه کار بکنی تو پراپرتی doubleCilck یا click در DGView این کد رو بنویس


private void DGView_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
TXT_Farmer_Name.Text = DGView.CurrentRow.Cells[0].Value.ToString().Trim() + " " + DGView.CurrentRow.Cells[1].Value.ToString().Trim();
Txt_Type.Text = DGView.CurrentRow.Cells[4].Value.ToString();
Sell.Code_Bar = DGView.CurrentRow.Cells[6].Value.ToString();
Sell.Code_Farmer = DGView.CurrentRow.Cells[7].Value.ToString();
Sell.Code_Type = DGView.CurrentRow.Cells[8].Value.ToString();
}