PDA

View Full Version : دو جستجو در یک dataGrid



Access
چهارشنبه 16 مرداد 1387, 17:29 عصر
من در برنامه خودم دو بار از یک جدول عمل جستجو رو انجام میدم و نتایج جستجو اول رو در string str1 نتایج جستجو دوم را در string str2 ذخیره میکنم حالا می خوام این دو جستجو رو با هم توسط خاصیت DataSource در dataGrid1 نشون بدم
لطفا راهنمایی کنید .

tthenry14plus
چهارشنبه 16 مرداد 1387, 18:14 عصر
خیلی راحت انجام میشه،
فقط باید دوبار روی جدول مجازی ای که در DataSet ایجاد کردی عمل Fill رو انجام بدی، با اینکار حاصل کوئری فعلی به کوئری قبلی اضافه شده و جدول مجازی ای که در DataSet تشکیل شده Update میشه.
یادتون باشه که DataSet رو نباید Private تعریف کنید ...
مثال:


OleDbConnection con = newOleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Environment.CurrentDirectory + "\\db1.mdb");
OleDbDataAdapter da;
DataSet ds = newDataSet();

privatevoid button1_Click(object sender, EventArgs e)
{
da = newOleDbDataAdapter("select * from table1 where city like '%b%'", con);
da.Fill(ds, "t1");
dataGridView1.DataSource = ds.Tables["t1"];
}


privatevoid button1_Click(object sender, EventArgs e)
{
da = newOleDbDataAdapter("select city from table1 where city like '%d%'", con);
da.Fill(ds, "t1");
}

بدین ترتیب هر عمل Fill ی که روی ds.Tables["t1"] اعمال کنید نه تنها روی دیتاگرید بلکه رو تمامی اشیائی که به ds.Tables["t1"] متصلند اعمال میشه.

Access
پنج شنبه 17 مرداد 1387, 15:12 عصر
من تو برنامه خودم HeaderText رو در dataGrid فارسی کرده بودم ولی وقتی
این کد رو می نویسم HeaderText کار نمی کنه به نظر من MappingName تغییر می کنه شاید هم دلیل دیگه داره .....




da.Fill(ds, "t1");
dataGrid1.DataSource = ds.Tables["t1"];

tthenry14plus
پنج شنبه 17 مرداد 1387, 16:08 عصر
یعنی بعد از اتصال به دیتاست هدرهای دیتاگرید به همون صورت قبلی بر میگرده؟
خوب اگر اینطوریه باید بعد از اتصال به دیتاست تک تک هدرهارو دستی تغییر بدید:
مثال:


dataGridView1.Columns[0].HeaderText = "";
dataGridView1.Columns[1].HeaderText = "ëںê ¦ںëيں§گی";
dataGridView1.Columns[2].HeaderText = "ëںê";
dataGridView1.Columns[3].HeaderText = "ê§ی©";
dataGridView1.Columns[4].HeaderText = "¢éهë";
dataGridView1.Columns[5].HeaderText = "™§©«";


یا با یک حلقه اینکارو انجام بدید:



string[] strHeaders = { "©§یه", "ëںê ¦ںëيں§گی", "ëںê" };
for (int i = 0; i < dataGridView1.Columns.Count; i++)
dataGridView1.Columns[5].HeaderText = strHeaders[i];

Access
پنج شنبه 17 مرداد 1387, 23:40 عصر
من دستی هم این کارو کردم ولی نتیجه نگرفتم

tthenry14plus
جمعه 18 مرداد 1387, 02:24 صبح
کارتون رو روی یک دیتاگرید جدید امتحان کنید شاید دیتاگرید رو دستکاری کردید ...

Access
جمعه 18 مرداد 1387, 14:41 عصر
باید بگم که در dataGridView این مشکل حل میشه ولی در dataGrid نمیشه من به دلایلی از dataGridView استفاده نکرده ام چون در dataGrid این کد وجود نداره

dataGridView1.Columns[0].HeaderText
در dataGrid باید اول از این کد استفاده کنی

dataGridTextBoxColumn1.MappingName = "Code_Kala";

بعد اگه درجدول Code_Kala رو پیدا کرد با این کد هدر اون رو عوض میکنه

dataGridTextBoxColumn1.HeaderText = "کد کالا";

Access
شنبه 19 مرداد 1387, 16:37 عصر
کسی نمی خواهد جواب بده...

tthenry14plus
یک شنبه 20 مرداد 1387, 02:30 صبح
من با اون روشی که شما میفرمائید کار نکردم الان هم به سی شارپ دسترسی ندارم که تستش کنم ولی اگر مشکل شما فقط و فقط در کار با فارسی میتونید یه کاره دیگه انجام بدید:
عناوینتون رو در جدول انگلیسی کنید، حالا در دیتاگریدتون هدر رو پنهان کنید و به جای هدر از Lable در بالای دیتاگرید برای درج عنوان ستون ها استفاده کنید.
اگر هم خواستید میتونید مقدار AutoSizeColumnsMode را برابر Fill قرار بدید که عناوین درست بالای ستون مربوط به خودشو قرار بگیره.