PDA

View Full Version : ارتباط کمبوباکس با دیتاگرید ویو



strongxxx
شنبه 20 دی 1393, 14:18 عصر
با سلام
فرض کنید یک کمبو باکس داریم و یک دیتاگریدویو ، کمبو باکس ما شامل دو تا مقدار است حال می خواهیم وقتی مثلا مقدار1 را در کمبو باکس وارد کرد دیتاگرید جدول 1 را نشان دهند و
در صورتیکه مقدار2 در کمبو باکس انتخاب شد ، جدول 2 در داخل دیتاگرید نمایش داده شود. لطفا راهنمایی کنید

بیتا حکمت
شنبه 20 دی 1393, 14:20 عصر
شما از طریق رویداد SelectedIndexChanged می تونید تشخیص بدین که چه ایتمی انتخاب شده ، بعد شرط بزارین و .. کلا" اینایی رو که میگم سرچ کنید به جواب می رسید ، نتونستین منم کمک می کنم .

1- ریختن دیتاتیل در گرید

2- رویداد SelectedIndexChanged

حسین.کاظمی
شنبه 20 دی 1393, 17:22 عصر
سلام
با فرض اینکه برای پر کردن دیتا گریدت از بانک از طریق تابع زیر استفاده کرده ایید جوابتون را میدم

تابع زیر را قبل از رویداد laod فرم بنویس

private void Fill(string strsqlQuery)
{
try
{
OleDbConnection ocn = new OleDbConnection(ConnectionString);
OleDbDataAdapter oda = new OleDbDataAdapter(strsqlQuery, ocn);
System.Data.DataTable dt = new System.Data.DataTable();
dt.Clear();
oda.Fill(dt);


///
dataGridView1.Columns.Clear();
dataGridView1.DataSource = null;

dataGridView1.DataSource = dt;

///

dt.Dispose();
oda.Dispose();
ocn.Dispose();


this.Cursor = Cursors.Default;
}
catch (Exception ex)
{
this.Cursor = Cursors.Default;
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}




بعد برای نمایش اطلاعات در گرید براساس انتخاب گزینه های موجود در comboBox کد زیر را بنویسید


switch (cmbSearch.SelectedIndex)
{
case 0:
Fill( @"SELECT * FROM table1");
break;
case 1:

Fill(@"SELECT * FROM table2");

break;


}




سوالی داشتی در خدمتم
پیروز و موفق باشید

strongxxx
یک شنبه 21 دی 1393, 07:37 صبح
خیلی ممنون از لطف شما این مشکل حل شد
فقط نکته ای که الان هست اینه که چون دو تا جدول با فیلد های متفاوت داریم در هنگام تنظیم header name برای گرید ویو
چه کار باید کرد ؟

حسین.کاظمی
یک شنبه 21 دی 1393, 10:57 صبح
خیلی ممنون از لطف شما این مشکل حل شد
فقط نکته ای که الان هست اینه که چون دو تا جدول با فیلد های متفاوت داریم در هنگام تنظیم header name برای گرید ویو
چه کار باید کرد ؟

شما توی کوئریتون میتونید اینجور بنویسید


select name AS[نام],family AS[فامیلی],....

بیتا حکمت
یک شنبه 21 دی 1393, 11:03 صبح
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Columns[0].HeaderText = "عنوان دلخواه";
}



با این کد هم می تونید تغییر بدین

حسین.کاظمی
یک شنبه 21 دی 1393, 17:56 عصر
dataGridView1.Columns[0].HeaderText = "عنوان دلخواه";




بعد از اینکه dataTable را به خاصیت datasource کنترل datagrid اختصاص دادی واسه هرکدوم از ستون هایی که قراره نمایش داده شود (در کوئری) از این کد استفاده کنی ولی گفتم شاید نمایش ستون ها در هر کوئریت متفاوت باشه می تونی از کدی که در پست 5 قراردادم استفاده کنی

موفق باشید