نمایش نتایج 1 تا 16 از 16

نام تاپیک: نمایش نتیجه جستجوی انجام شده روی dataset در datagridview

  1. #1
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    Question نمایش نتیجه جستجوی انجام شده روی dataset در datagridview

    سلام وقت به خیر
    دوستان من دارم یک برنامه ویندوزی تحت شبکه می نویسم که داخلش یک بخش جستجو قرار دادم که عملیات جستجو رو به ازای ورود هر حرف در تکست باکس انجام میده :
    private void txtSearch_TextChanged(object sender, EventArgs e)
    {
    Searching...
    }

    در پروژه های گذشتم کوئری جستجو رو مستقیما روی دیتابیس اعمال می کردم و نتیجه رو در دیتاگریدویو نمایش میدادم
    و چون برنامه تک کاربره بود، دفعات اتصال بالا به دیتابیس مشکلی ایجاد نمی کرد (به ازای ورود هر حرف توسط کاربر، یک بار اتصال به دیتابیس و اعمال کوئری جستجو)
    اما خب همونطور که خودتون می دونید این تکنیک، از لحاظ فنی ارزش بسیار پایینی داره...
    در پروژه ی جدیدم چون برنامه چند کاربره و تحت شبکه هست میخوام از روش اصولی تر که خواندن یک بار اطلاعات از دیتابیس و اعمال کوئری جستجو روی دیتاست هست استفاده کنم (دوستان اگر تکنیک بهتری مدنظرتون هست مطرح کنید لطفا)
    اما مشکلم اینجاست که بعد از اعمال جستجو روی دیتاست و گرفتن نتیجه در یک آرایه ی رکورد، نمی تونم اون رو در دیتا گرید ویو نمایش بدم. از تکنیک های زیر استفاده کردم ولی به نتیجه نرسیدم
    اول سعی کردم به صورت دستی یه جدول به دیتاست اضافه کنم و رکوردها رو به اون جدول اضافه کنم که نشد :


    private void txtSearch_TextChanged(object sender, EventArgs e)
    {
    DataRow[] resultRows = ds.Tables["tblVisitant"].Select("Name Like '%S%' ");
    DataTable dt = new DataTable("tblSearch");
    dt = ds.Tables["tblVisitant"].Clone();
    ds.Tables.Add(dt);
    foreach (DataRow row in resultRows)
    ds.Tables["tblSearch"].Rows.Add(row);
    dgvMain.DataBindings.Clear();
    dgvMain.DataBindings.Add("DataSource", ds, "tblSearch");
    }

    خطایی که در رابطه با کد بالا داد :

    1.PNG



    بعد سعی کردم نتیجه رو در یک جدول مستقل بریزم باز هم نشد :


    private void txtSearch_TextChanged(object sender, EventArgs e)
    {
    DataRow[] resultRows = ds.Tables["tblVisitant"].Select("Name Like '%س%' ");
    DataTable dt = new DataTable("tblSearch");
    dt = ds.Tables["tblVisitant"].Clone();
    foreach (DataRow row in resultRows)
    dt.Rows.Add(row);
    dgvMain.DataSource = dt;
    }

    خطایی که در رابطه با کد بالا داد :


    2.PNG



    دوستان عزیز ممنون میشم در این رابطه من رو راهنمایی کنید و ایراد روش های بالا رو هم توضیح بدید
    خیلی ممنون

  2. #2

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    سلام دوست من
    خب فیلتر رو با استفاده از کد زیر روی گرید انجاک بده:

    for (int item = 0; item < dataGridView1.Rows.Count; item++)
    {
    if (!dataGridView1.Rows[item].Cells[1].Value.ToString().Contains(textBox1.Text))
    dataGridView1.Rows[item].Visible = false;
    else
    dataGridView1.Rows[item].Visible = true;
    }

  3. #3
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    Question نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط rezashaban مشاهده تاپیک
    سلام دوست من
    خب فیلتر رو با استفاده از کد زیر روی گرید انجاک بده:

    for (int item = 0; item < dataGridView1.Rows.Count; item++)
    {
    if (!dataGridView1.Rows[item].Cells[1].Value.ToString().Contains(textBox1.Text))
    dataGridView1.Rows[item].Visible = false;
    else
    dataGridView1.Rows[item].Visible = true;
    }
    ممنون دوست عزیز راه خوبیه ولی شرطی که اینجا گذاشتم یک مثال سادست، من میخوام از شرط های پیچیده تری استفاده کنم که واسه اعمال اونها نیاز به کار با خود دیتاست دارم

  4. #4

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    مثلا چه شرطهایی؟ خود گرید هم مثل دیتاستش هست تقریبا

  5. #5
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط rezashaban مشاهده تاپیک
    مثلا چه شرطهایی؟ خود گرید هم مثل دیتاستش هست تقریبا
    شرط های بازه زمانی، شرط های محاسباتی و ...

  6. #6

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط csharpcollegian مشاهده تاپیک
    شرط های بازه زمانی، شرط های محاسباتی و ...
    خب این موارد هم قابل اعمال هستش با همین روش

  7. #7
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط rezashaban مشاهده تاپیک
    خب این موارد هم قابل اعمال هستش با همین روش
    بازم نمیشه چون قراره بعد از اعمال کوئری جستجو، تمام کنترل های دیگه ی فرم که به دیتاست بایند شدن تاثیر بپذیرن، بایستی حتما دیتاست باشه...

  8. #8

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    خب از این کد استفاده کن

    dt.AsEnumerable().Where(میتونی از لامیدا استفاده کنی)

  9. #9
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط rezashaban مشاهده تاپیک
    خب از این کد استفاده کن

    dt.AsEnumerable().Where(میتونی از لامیدا استفاده کنی)
    آقا رضا مشکل من اعمال کوئری نیست، من نمی تونم بعد از اجرای کوئری نتیجه رو داخل یک دیتاست قرار بدم همین !
    یه نگاه به کدهام بندازید....

  10. #10

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    خب از این کد استفاده کن

    var dt = new DataTable()
    {
    Columns =
    {
    "name"
    },
    Rows =
    {
    "ali", "reza", "hasan"
    }
    };
    var ds = new DataSet();
    var dt1 = new DataTable();
    dt1.TableName = "test";
    ds.Tables.Clear();
    ds.Tables[0].Rows.Add(dt.Select("select *...").ToList());

  11. #11
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط rezashaban مشاهده تاپیک
    خب از این کد استفاده کن

    var dt = new DataTable()
    {
    Columns =
    {
    "name"
    },
    Rows =
    {
    "ali", "reza", "hasan"
    }
    };
    var ds = new DataSet();
    var dt1 = new DataTable();
    dt1.TableName = "test";
    ds.Tables.Clear();
    ds.Tables[0].Rows.Add(dt.Select("select *...").ToList());

    جواب نمیده این کد، ارور داره :
    Cannot implicitly convert type 'System.Data.DataRow' to 'System.Data.DataRow[]

  12. #12
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    دوستان کسی نیست که بتونه این مشکل رو حل کنه ؟
    خیلی ساده تر مشکلم رو مطرح کنم من فقط دنبال راهی هستم که بشه یک آرایه از جنس رکورد رو که نتیجه ی جستجوم از یک دیتاست داخلش قرار گرفته :
    DataRow[] resultRows = ds.Tables["tblVisitant"].Select(.....);

    رو وارد یک جدول جدید کنم و اون جدول جدید رو به دیتاستم اضافه کنم، همین !
    ممنون میشم دوستان پاسخ بدن

  13. #13
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط csharpcollegian مشاهده تاپیک
    دوستان کسی نیست که بتونه این مشکل رو حل کنه ؟
    خیلی ساده تر مشکلم رو مطرح کنم من فقط دنبال راهی هستم که بشه یک آرایه از جنس رکورد رو که نتیجه ی جستجوم از یک دیتاست داخلش قرار گرفته :
    DataRow[] resultRows = ds.Tables["tblVisitant"].Select(.....);

    رو وارد یک جدول جدید کنم و اون جدول جدید رو به دیتاستم اضافه کنم، همین !
    ممنون میشم دوستان پاسخ بدن
    می تونی از dataview استفاده کنی ....!!!! نه؟؟؟ نمی شه؟؟؟!!!

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    DataView dv = new DataView(table);
    dv.RowFilter = "Name like '%" + textBox1.Text + "%'";
    dataGridView1.DataSource = dv;
    }

  14. #14
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    می تونی از dataview استفاده کنی ....!!!! نه؟؟؟ نمی شه؟؟؟!!!

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    DataView dv = new DataView(table);
    dv.RowFilter = "Name like '%" + textBox1.Text + "%'";
    dataGridView1.DataSource = dv;
    }
    چرا میشه !!!
    این روش جواب داد ممنونم ازتون
    ولی خب اون مساله قبلی بدجوری فکرمو مشغول کرده و مطمئن هستم بعدا مجددا باهاش روبه رو میشم
    چطور میشه یه آرایه از رکوردها رو به یه یک جدول جدید اضافه کرد ....!؟

  15. #15
    کاربر دائمی آواتار khokhan
    تاریخ عضویت
    دی 1388
    محل زندگی
    اسکو
    پست
    2,176

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط csharpcollegian مشاهده تاپیک
    چرا میشه !!!
    این روش جواب داد ممنونم ازتون
    ولی خب اون مساله قبلی بدجوری فکرمو مشغول کرده و مطمئن هستم بعدا مجددا باهاش روبه رو میشم
    چطور میشه یه آرایه از رکوردها رو به یه یک جدول جدید اضافه کرد ....!؟
    کل آرایه رو می ریزه توی یه حلقه البته قبلش بایستی تکلیف ستون مقصد رو مشخص می کنی ... یعنی اگه چنین ستونی وجود نداشت ، قبل از حلقه ایجاد می کنی و به تیبل اضافه می کنی
    بعد درون حلقه دونه دونه آیتم ها رو می گیری و به اون ستونی که گفتم اضافه می کنی ............
    باز اگه خیلی اصرار داری تا از روش خودت که در پست اول اشاره کردی استفاده کنی .... موقع افزودن ردیفها به جدول به جای استفاده از add ، از import استفاده کن تا بهانه اش از بین بره
    یه چیزی مثل این :

    DataTable dt1 = ds.Tables[0];

    DataTable dt2 = new DataTable();

    dt2 = dt1.Clone();

    foreach(DataRow row in dt1.Rows){

    if(row["Column1"] == 10){

    // Import the Row into dt2 from dt1
    dt2.ImportRow(row);

    }

    }
    آخرین ویرایش به وسیله khokhan : چهارشنبه 12 اسفند 1394 در 16:34 عصر

  16. #16
    کاربر دائمی آواتار csharpcollegian
    تاریخ عضویت
    خرداد 1394
    محل زندگی
    تهران
    پست
    174

    نقل قول: نمایش نتیجه جستجوی انجام شده روی دیتاست در دیتاگریدویو

    نقل قول نوشته شده توسط khokhan مشاهده تاپیک
    کل آرایه رو می ریزه توی یه حلقه البته قبلش بایستی تکلیف ستون مقصد رو مشخص می کنی ... یعنی اگه چنین ستونی وجود نداشت ، قبل از حلقه ایجاد می کنی و به تیبل اضافه می کنی
    بعد درون حلقه دونه دونه آیتم ها رو می گیری و به اون ستونی که گفتم اضافه می کنی ............
    باز اگه خیلی اصرار داری تا از روش خودت که در پست اول اشاره کردی استفاده کنی .... موقع افزودن ردیفها به جدول به جای استفاده از add ، از import استفاده کن تا بهانه اش از بین بره
    یه چیزی مثل این :

    DataTable dt1 = ds.Tables[0];

    DataTable dt2 = new DataTable();

    dt2 = dt1.Clone();

    foreach(DataRow row in dt1.Rows){

    if(row["Column1"] == 10){

    // Import the Row into dt2 from dt1
    dt2.ImportRow(row);

    }

    }
    آخ آخ اینم جواب داد...!!!
    اینم کد صحیح با توجه به راهنمایی شما :
    DataRow[] resultRow = ds.Tables["tblVisitant"].Select("Name Like '%" + txtSearch.Text + "%'");
    DataTable dt = ds.Tables["tblVisitant"].Clone();
    foreach (DataRow row in resultRow)
    dt.ImportRow(row);
    dgvMain.DataBindings.Clear();
    dgvMain.DataSource = dt;

    خیلی خیلی ممنون مشکلم کامل حل شد
    موفق باشید

تاپیک های مشابه

  1. سوال: ذخیره جستجوی انجام شده بر روی اطلاعات gridview
    نوشته شده توسط dehqhani در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: پنج شنبه 29 خرداد 1393, 20:48 عصر
  2. سوال: جستجوي كامل بر روي جداول در sql ?
    نوشته شده توسط oghab در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 12
    آخرین پست: دوشنبه 13 آبان 1387, 12:36 عصر
  3. سوال: نمایش property های اضافه شده داخل کنترل در قسمت نمایشی
    نوشته شده توسط omidjadidolislam در بخش C#‎‎
    پاسخ: 6
    آخرین پست: شنبه 19 مرداد 1387, 07:16 صبح
  4. تشخیص جستجوی انجام شده در موتور های جستجو
    نوشته شده توسط marzban در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: چهارشنبه 10 مرداد 1386, 08:59 صبح
  5. نمایش نتیجه ی جستجو و مشخصات آن در یک فرم
    نوشته شده توسط fatimah در بخش Access
    پاسخ: 4
    آخرین پست: چهارشنبه 01 شهریور 1385, 15:14 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •