PDA

View Full Version : سوال: فیلتر کردن Datatable



30yavash
پنج شنبه 19 شهریور 1388, 18:11 عصر
من یه دیتاست به نام dsAnbardari دارم که چندتا table داره.
اصلی ترین جدول این دیتاست، Kala هست که محتویاتش توی یه DataGridView نمایش داده میشه.(همون طور که توی شکل مشخصه)
با تغییر انبار و کلیک روی دکمه مربوطه ، باید محتویات دیتاگرید ویو تغییر کنه و کالاهای همون انبار رو نشون بده.
من رویداد کلیک دکمه رو به صورت زیر تعریف کردم.
-----

private void btnGo_Click(object sender, EventArgs e)
{
DataRow[] rows;
rows = dsAnbardari.Tables["Kala"].Select("AnbarID=" + cmbAnbar.SelectedValue);

dsAnbardari.Tables["Kala"].Rows.Clear();
foreach (DataRow r in rows)
{
dsAnbardari.Tables["Kala"].Rows.Add(r);
}

}
cmbAnbar کومبو باکس ، حاوی نام انبارها
dsAnbardari دیتاست
-----
مشکل این کد اینه که با اجرای خط dsAnbardari.Tables["Kala"].Rows.Clear کل سطرهای جدول کالا حذف می شه و حلقه for سطر خالی به من نشون می ده.
چه طور می تونم این مشکل رو حل کنم؟ اصلا آیا راه حل انتخابی من روش خوبیه؟

mahdi87_gh
پنج شنبه 19 شهریور 1388, 20:05 عصر
دوست عزیز از dataview استفاده کن و توی رویداد selectedchange مربوط به combobox اون خاصیت RowFilter رو عوض کن

DataView objDataView;
objDataView = new DataView(objDataset.Tables["kala"]);
objDataView.RowFilter=cmbanbar.selectedvalue;

moferferi
پنج شنبه 19 شهریور 1388, 23:54 عصر
سلام.برای فیلتر کردن دیتا تیبل از کد زیر استفاده کن


DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sqlSelect, sqlConnectString);
da.Fill(dt);
string filter = "LastName LIKE 'AG*'";
// Filter the rows using Select() method of DataTable
DataRow[] rows = dt.Select(filter);
Console.WriteLine("---Filtering using DataTable.Select()---");
foreach (DataRow row in rows)
Console.WriteLine("{0}\t{1}, {2}",
row["ContactID"], row["LastName"], row["FirstName"]);



برای دیتاویو هم به همین شکل


DataView dv = dt.DefaultView;
dv.RowFilter = filter;

30yavash
جمعه 20 شهریور 1388, 07:04 صبح
سلام.برای فیلتر کردن دیتا تیبل از کد زیر استفاده کن


DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(sqlSelect, sqlConnectString);
da.Fill(dt);
string filter = "LastName LIKE 'AG*'";
// Filter the rows using Select() method of DataTable
DataRow[] rows = dt.Select(filter);
Console.WriteLine("---Filtering using DataTable.Select()---");
foreach (DataRow row in rows)
Console.WriteLine("{0}\t{1}, {2}",
row["ContactID"], row["LastName"], row["FirstName"]);



برای دیتاویو هم به همین شکل


DataView dv = dt.DefaultView;
dv.RowFilter = filter;


می خام توی DataGridView نشونش بدم نه توی کنسول

30yavash
جمعه 20 شهریور 1388, 07:10 صبح
دوست عزیز از dataview استفاده کن و توی رویداد selectedchange مربوط به combobox اون خاصیت RowFilter رو عوض کن

DataView objDataView;
objDataView = new DataView(objDataset.Tables["kala"]);
objDataView.RowFilter=cmbanbar.selectedvalue;
خیلی روش باحالی بود.خوشم اومد دستت درد نکنه.
فقط یه سوالی که برام مطرحه:
1- آیا من همیشه باید برای نمایش دیتا در DataGridView از DataView استفاده کنم؟یا فقط هنگام فیلتر کردن دیتا باید از DataView استفاده کنم؟(بهترین روش چیه؟)
2- من الان یه فرم دارم که عکسش رو تو پست اول گذاشتم ، وقتی که فرمم Load می شه DataGridView رو با DataSet پر می کنم و وقتی که لازمه دیتا فیلتر بشه از DataView استفاده می کنم،آیا این روش ، روش خوبیه؟
3- بعد از فیلتر کردن داده ها در DataGridView چطور ردیف ها رو حذف کنم.قبلا از کد زیر استفاده می کردم:

int i = dataGridView1.SelectedCells[0].RowIndex;
dsAnbardari.Tables["Kala"].Rows[i].Delete();
نکته: جدول Kala دارای یک کلید اصلی به نام ID هست.

Vahid_moghaddam
جمعه 20 شهریور 1388, 09:22 صبح
لازم نیست یه dataview بسازید.



dsAnbardari.Tables["Kala"].DefaultView.RowFilter=your filter

saeeedft
شنبه 21 شهریور 1388, 01:08 صبح
خیلی روش باحالی بود.خوشم اومد دستت درد نکنه.
فقط یه سوالی که برام مطرحه:
1- آیا من همیشه باید برای نمایش دیتا در DataGridView از DataView استفاده کنم؟یا فقط هنگام فیلتر کردن دیتا باید از DataView استفاده کنم؟(بهترین روش چیه؟)
2- من الان یه فرم دارم که عکسش رو تو پست اول گذاشتم ، وقتی که فرمم Load می شه DataGridView رو با DataSet پر می کنم و وقتی که لازمه دیتا فیلتر بشه از DataView استفاده می کنم،آیا این روش ، روش خوبیه؟
3- بعد از فیلتر کردن داده ها در DataGridView چطور ردیف ها رو حذف کنم.قبلا از کد زیر استفاده می کردم:

int i = dataGridView1.SelectedCells[0].RowIndex;
dsAnbardari.Tables["Kala"].Rows[i].Delete();نکته: جدول Kala دارای یک کلید اصلی به نام ID هست.
دوست عزیز استفاده از data view روش خوبی هست

danial82
یک شنبه 08 آذر 1388, 11:54 صبح
چطور میشه شرطی گذاشت تا رکوردهای تکراری نشان داده نشوند
چیزی شبیه Distinct یا Group by در SQL