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

نام تاپیک: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

  1. #1

    حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    با سلام.
    دوستان بزرگوار به مشکل برخوردم و خیلی هم عجله دارم
    من چک باکس های دیتا گرید ویو را به صورت زیر انتخاب می کنم . وقتی سرچم را عوض می کنم چک باکس های انتخاب شده پاک می شند . می خوام وقتی بر اساس تکست باکس فیلتر عوض می شه اونایی که چک شدند پاک نشند


    foreach (DataGridViewRow row in dataGridView1.Rows)
    row.Cells[0].Value = checkBox1.Checked;


    توضیحات اضافه.
    یه دیتا گرید دارم که یک ستونش چک باکسه و با سرچ اونا را انتخاب میکنم.ولی بعد از انتخاب با بالا و پاین شدن دیتا گرید(به دلیل سرچ) اونایی که تیک زدم .تیکشون برداشته میشه
    آخرین ویرایش به وسیله hamidtmu : شنبه 14 اردیبهشت 1398 در 19:49 عصر

  2. #2

    نقل قول: چک باکس

    دوستان عزیز کماکان منتظر هستم

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    سلام
    قبل از رفرش، id ردیفها رو توی یه لیست ذخیره کن. بعد از لود اطلاعات، ردیفهایی که توی لیست هستند رو تیک بزن.

  4. #4

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    نقل قول نوشته شده توسط Mahmoud Zaad مشاهده تاپیک
    سلام
    قبل از رفرش، id ردیفها رو توی یه لیست ذخیره کن. بعد از لود اطلاعات، ردیفهایی که توی لیست هستند رو تیک بزن.

    تشکر دوست عزیز .ولی تا حالا این کار را انجام ندادم . میشه لطفا راهنمایی بیشتری بفرمایید. چند تا مشکل به همین صورت دارم
    چندیدن نمونه برنامه دیدم ولی همین مشکل را داشتند.

    بابت تصحیح عنوان هم توسط مدیران سپاس. از این به بعد عنوان تایپیک را درست میزارم

  5. #5
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    الان امکان تست ندارم ولی روالش به صورت زیر هست:
    //ایجاد یک لیست برای ذخیره
    //id (هر فیلدی که یکتا باشد)
    List<string> _myList=new List<string>();
    foreach(DataGridViewRow row in dataGridview1.Rows)
    {
    if(Convert.ToBoolean(row.Cells["checkColumn"].Value.ToString(()
    {
    _myList.Add(row.Cells["idColumn"].Value.ToString());
    }
    }
    حالا بعد از لود مجدد اطلاعات:
    foreach(string str in _myList)
    {
    foreach(DataGridViewRow row in dataGridView1.Rows)
    {
    if(str==row.Cells["idColumn"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["checkColumn"].Value=true;
    }
    }
    }

    ممکنه غلط املایی در کدها وجود داشته باشه یا حروف بزرگ و کوچک رعایت نشده باشه.

  6. #6

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    تشکر از دوست بزرگوار. من این کد را دقیقا کجا باید بزارم . توی فرم لود و چک باکس گذاشتم جواب نداد.
    ایا باید به این کد چیزی اضافه کنم . مثلا اونجا که زده بعد از لود مجدد اطلاعات

  7. #7

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    نقل قول نوشته شده توسط hamidtmu مشاهده تاپیک
    تشکر از دوست بزرگوار. من این کد را دقیقا کجا باید بزارم . توی فرم لود و چک باکس گذاشتم جواب نداد.
    ایا باید به این کد چیزی اضافه کنم . مثلا اونجا که زده بعد از لود مجدد اطلاعات
    دوست عزیز شما مشکلت رو که میدونی کجاست پس طبعا باید بدونی این کدهارو کجا بذاری، جناب محمود زاد هم که براتون کامنت گذاری کرده دیگه معلومه باید کدها کجا نوشته بشن
    خواهشا copy-paster نباشید، این سوالاتی که میپرسین واقعا پیش پا افتاده و مبتدیانه و جسارتا ناشیانه هستن. با کپی پیست کردن به جایی نمیرسین اگر واقعا میخواید برنامه نویس بشید قبل از شروع به کدنویسی حتما باید چندین دوره رو بگذرونین، به یک دوره هم نباید بسنده کنید حتما چندین دوره رو بگذرونین، توی کشور ما که کپی رایت برای محصولات کشورهای بیگانه وجود نداره میتونین خیلی راحت و بصورت رایگان دوره های زبان اصلی رو دانلود کنید

    امیدوارم از این حرف بنده ناراحت نشید اما واقعیت ها رو باید گفت

  8. #8

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    دوست عزیز شما مشکلت رو که میدونی کجاست پس طبعا باید بدونی این کدهارو کجا بذاری، جناب محمود زاد هم که براتون کامنت گذاری کرده دیگه معلومه باید کدها کجا نوشته بشن
    خواهشا copy-paster نباشید، این سوالاتی که میپرسین واقعا پیش پا افتاده و مبتدیانه و جسارتا ناشیانه هستن. با کپی پیست کردن به جایی نمیرسین اگر واقعا میخواید برنامه نویس بشید قبل از شروع به کدنویسی حتما باید چندین دوره رو بگذرونین، به یک دوره هم نباید بسنده کنید حتما چندین دوره رو بگذرونین، توی کشور ما که کپی رایت برای محصولات کشورهای بیگانه وجود نداره میتونین خیلی راحت و بصورت رایگان دوره های زبان اصلی رو دانلود کنید

    امیدوارم از این حرف بنده ناراحت نشید اما واقعیت ها رو باید گفت
    سلام و تشکر ، حق با شماست. ولی واقعا اینو نفهمیدم.

    این کد تشکیل دیتا گرید



    radGridView1.Columns.Add(new DataGridViewCheckBoxColumn() { Name = "Col1", HeaderText = "انتخاب", Width = 50 });
    radGridView1.Columns.Add(new DataGridViewTextBoxColumn() { Name = "Col2", HeaderText = "ردیف", DataPropertyName = "ID", Width = 70 });








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



    //ایجاد یک لیست برای ذخیره
    //id (هر فیلدی که یکتا باشد)
    List<string> _myList = new List<string>();
    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    if (Convert.ToBoolean(row.Cells["Col1"].Value.ToString()))
    {
    _myList.Add(row.Cells["Col2"].Value.ToString());
    }
    }
    //حالا بعد از لود مجدد اطلاعات:
    foreach (string str in _myList)
    {
    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    if (str == row.Cells["Col2"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["Col1"].Value = true;
    }


    آخرین ویرایش به وسیله hamidtmu : دوشنبه 16 اردیبهشت 1398 در 12:19 عصر

  9. #9

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    ببین دوست عزیز این کد:
    //ایجاد یک لیست برای ذخیره
    //id (هر فیلدی که یکتا باشد)
    List<string> _myList=new List<string>();
    foreach(DataGridViewRow row in dataGridview1.Rows)
    {
    if(Convert.ToBoolean(row.Cells["checkColumn"].Value.ToString(()
    {
    _myList.Add(row.Cells["idColumn"].Value.ToString());
    }
    }



    رو باید قبل از ریفرش شدن دیتاگرید بذارید یعنی موقعی که دیتاگریدتون اطلاعات داخلش هست و مثلا به قول خودتون قراره نحوه نمایش یا نحوه جستجو رو عوض کنین و داده دوباره از دیتابیس واکشی بشن، پس قبل از اینکه سطرهای دیتاگرید رو پاک کنید باید کد بالارو اجرا کنید.
    حالا بعد از اینکه دیتاگرید ریفرش شد و داده ها از سمت دیتابیس لود شدن توی دیتاگرید باید این کد رو قرار بدین:
    حالا بعد از لود مجدد اطلاعات:
    foreach(string str in _myList)
    {
    foreach(DataGridViewRow row in dataGridView1.Rows)
    {
    if(str==row.Cells["idColumn"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["checkColumn"].Value=true;
    }
    }
    }



  10. #10

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    تشکر سیروان عزیز. من این کار را انجام دادم و متوجه شدم ولی نشد جان برادر
    من قبل از تغیر در اطلاعات دیتا گرید (قبل از سرچ اون کد را گذاشتم)
    بعد از کد سرچ هم کد پایینی را گذاشتم ولی خطا داد

    این کل کد منه



    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlClient;

    namespace WindowsFormsApplication21
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;initial catalog=testDB;integrated security=true");
    SqlCommand cmd = new SqlCommand();

    private void Form1_Load(object sender, EventArgs e)
    {
    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = con;
    adp.SelectCommand.CommandText = "Select * from Student1 where code like '%' + @S + '%'";
    adp.SelectCommand.Parameters.AddWithValue("@S", textBox1.Text + "%");
    adp.Fill(ds, "Student1");
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Student1";


    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    List<string> _myList = new List<string>();
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    if (Convert.ToBoolean(row.Cells["checkColumn"].Value.ToString()))
    {
    _myList.Add(row.Cells["Code"].Value.ToString());
    }
    }



    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = con;
    adp.SelectCommand.CommandText = "Select * from Student1 where code like '%' + @S + '%'";
    adp.SelectCommand.Parameters.AddWithValue("@S", textBox1.Text + "%");
    adp.Fill(ds, "Student1");
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Student1";

    //حالا بعد از لود مجدد اطلاعات:
    foreach (string str in _myList)
    {
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    if (str == row.Cells["Code"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["checkColumn"].Value = true;
    }
    }
    }



    }
    }
    }





    اینم صفحه نرم افزار

    ضمیمه 150129

    اینم خطا هنگام سرچ


    ضمیمه 150130

  11. #11

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    خب این خطا احتمالا به این علته که هیچ ستونی با این نام (checkcolumn) در دیتاگریدتون نیست، پس باید اول یه ستون با این نام (توجه کنین منظور از نام، پراپرتی name هست، نه پراپرتی text) ایجاد کنید

  12. #12

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    خب این خطا احتمالا به این علته که هیچ ستونی با این نام (checkcolumn) در دیتاگریدتون نیست، پس باید اول یه ستون با این نام (توجه کنین منظور از نام، پراپرتی name هست، نه پراپرتی text) ایجاد کنید
    3.jpg

    همه ستون ها را چک کردم ولی باز خطا داد.
    اینم اخرین اصلاحات

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SqlClient;

    namespace WindowsFormsApplication21
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }
    SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;initial catalog=testDB;integrated security=true");
    SqlCommand cmd = new SqlCommand();

    private void Form1_Load(object sender, EventArgs e)
    {
    // TODO: This line of code loads data into the 'testDBDataSet.Student1' table. You can move, or remove it, as needed.
    this.student1TableAdapter1.Fill(this.testDBDataSet .Student1);
    // TODO: This line of code loads data into the 'dataSet1.Student1' table. You can move, or remove it, as needed.
    this.student1TableAdapter.Fill(this.dataSet1.Stude nt1);
    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = con;
    adp.SelectCommand.CommandText = "Select * from Student1 where code like '%' + @S + '%'";
    adp.SelectCommand.Parameters.AddWithValue("@S", textBox1.Text + "%");
    adp.Fill(ds, "Student1");
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Student1";


    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
    List<string> _myList = new List<string>();
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    if (Convert.ToBoolean(row.Cells["checkColumnDataGridViewTextBoxColumn"].Value.ToString()))
    {
    _myList.Add(row.Cells["codeDataGridViewTextBoxColumn"].Value.ToString());
    }
    }



    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = con;
    adp.SelectCommand.CommandText = "Select * from Student1 where code like '%' + @S + '%'";
    adp.SelectCommand.Parameters.AddWithValue("@S", textBox1.Text + "%");
    adp.Fill(ds, "Student1");
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "Student1";

    //حالا بعد از لود مجدد اطلاعات:
    foreach (string str in _myList)
    {
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    if (str == row.Cells["codeDataGridViewTextBoxColumn"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["checkColumnDataGridViewTextBoxColumn"].Value = true;
    }
    }
    }



    }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

    }
    }
    }







    شاید دیتا بیسم مشکل داره نوع متغیراش؟

    اینم بگم کد را از نوع کلید و غیر کلید دو تاشو تست کردم
    4.jpg

  13. #13

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    توی دیتاگرید وقتی ستون رو تعریف کردین باید نوع ستون رو روی DatagridViewCheckboxColumn بذارین.
    این شرط رو:
    if (Convert.ToBoolean(row.Cells["checkColumnDataGridViewTextBoxColumn"].Value.ToString()))
    به این شکل تغییر بدین:
    if (((bool)row.Cells["checkColumnDataGridViewTextBoxColumn"].Value))


  14. #14

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    تغیر دادم.
    بازم خطا داد.
    666.jpg

    Untitled.png

    اینم کل پروژه

  15. #15

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    ستون checkbox توی دیتابیس مقادیرشون null هست باید حتما مقدار داشته باشن برای تبدیل هم از این دستور استفاده کنید:
    Convert.ToBoolean(row.Cells["checkColumnDataGridViewTextBoxColumn"].Value)


  16. #16

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    تشکر مستر سیروان. گیر داره. نمیدونم چرا جواب نمیده
    7778.jpg

  17. #17

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    تو پست قبلی گفتم که با این خط تبدیل رو انجام بدین:
    Convert.ToBoolean(row.Cells["checkColumnDataGridViewTextBoxColumn"].Value)




  18. #18

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    'گذاشتم باز همون خطارا داد
    ببین این اسم را درست گذاشتم. همون نام را میگم

    7779.png

  19. #19

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    با سلام.
    من دوستان تمام اوامر استاد شروین را انجام دادم ولی نتیجه به صورت زیر شد
    الان به سرچ نام همه تیک دار میشن و وقتی سرچ را پاک می کنم برخی تیک می خورن (بدون اینکه تیک زده باشم)
    این عکس
    Untitled.png



    اینم کد فوق که توی جستجوی نام گذاشتم. هر چند دوستان میگن ساده هست ولی واقعا پیچیدست


    private void name_TextChanged(object sender, EventArgs e)
    {
    //ایجاد یک لیست برای ذخیره


    List<string> _myList = new List<string>();
    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    Convert.ToBoolean(row.Cells["Column1"].Value);
    {
    _myList.Add(row.Cells["Column2"].Value.ToString());
    }
    }
    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = con;
    adp.SelectCommand.CommandText = "Select * from tip where name like '%' + @S + '%'";
    adp.SelectCommand.Parameters.AddWithValue("@S", name.Text + "%");
    adp.Fill(ds, "tip");
    radGridView1.DataSource = ds;
    radGridView1.DataMember = "tip";



    //for (int row = 0; row < radGridView1.Rows.Count; row++)
    // radGridView1.Rows[row].Cells[0].Value = false;

    ////حالا بعد از لود مجدد اطلاعات:
    foreach (string str in _myList)
    {
    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    if (str == row.Cells["Column2"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["Column1"].Value = true;
    }


    }
    }

    }


  20. #20

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    خط 9 را اصلاح کنید.

  21. #21

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    نقل قول نوشته شده توسط Mahmoud.Afrad مشاهده تاپیک
    خط 9 را اصلاح کنید.
    با عرض معذرت استاد به چه صورت اصلاح بشه. جسارتا راهنمایی بفرمایید

  22. #22

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    چند روش من اصلاح کردم . بی مورد تیک می خورند و اصولی تیک نمی خورند . مثلا من تیک نزدم و برخیاشون خودش میخوره و یا باز همه را تیک میزنه وقتی تکس تغیر می کنه

  23. #23

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    دوست عزیز الان خط 9 به نظر شما داره چیکار میکنه؟ منظورم این کده:
    Convert.ToBoolean(row.Cells["Column1"].Value);


  24. #24

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    اون خط تمام ردیف های دیتا گرید (فقط ستون 1)را به بولین تبدیل میکنه(مقدار چک باکسو)

  25. #25

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    توی همون خط احساس نمیکنی یه چیزی کمه؟ مثل یه دستور if

  26. #26

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    استاد کمه. قبلا هم گذاشتم ولی وقتی که مثلا اسم علی را تیک میزنم . بعد دو باره اسم محسن را جستجو و تیک میزنم. دوباره بر می گردم می بینم اسم علی تیکش برداشته شده


    فقط زمانی تیک برداشته نمیشه که اون اسم توی صفحه دیتا گرید باشه

    مثلا

    اگه علیا را سرچ بزنیم(تیک بزنم)

    دفعه دیگه علی را سرچ بزنیم تیک برداشته نمیشه

    ولی اگه صفحه دیتا گرید به سرچ محسن تغیر پیدا کنه تیک علی برداشته میشه



    //ایجاد یک لیست برای ذخیره


    List<string> _myList = new List<string>();
    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    if (Convert.ToBoolean(row.Cells["Column1"].Value))
    {
    _myList.Add(row.Cells["Column2"].Value.ToString());
    }
    }
    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = con;
    adp.SelectCommand.CommandText = "Select * from tip where name like '%' + @S + '%'";
    adp.SelectCommand.Parameters.AddWithValue("@S", name.Text + "%");
    adp.Fill(ds, "tip");
    radGridView1.DataSource = ds;
    radGridView1.DataMember = "tip";





    //حالا بعد از لود مجدد اطلاعات:
    foreach (string str in _myList)
    {
    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    if (str == row.Cells["Column2"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["Column1"].Value = true;
    }


    }
    }

    }






    مثل عکس زیر
    1
    1.png



    1

    2.png
    آخرین ویرایش به وسیله hamidtmu : پنج شنبه 02 خرداد 1398 در 16:32 عصر

  27. #27
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    سلام
    خط اول (که مربوط به ایجاد لیست هست) رو باید خارج از textChange یعنی در سطح کلاس تعریف کنید. در نهایت در یک جایی که کاربر تمام آیتم های مورد نیاز رو انتخاب می کنه مثلا وقتی دکمه تایید یا انتخاب زده شد، این لیست رو خالی کنید.
    _myList.Clear();

  28. #28

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    تشکر دوست عزیز و استاد شروین الان درست شد.

  29. #29

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

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

    فقط اونایی که توی دیتا گرید ویو نمایش میده را می گیره

    مثلا اول جستچو میکنم و محسن را تیک می زنم بعد میرم سرچ میزنم و علی را سرچ میزنم گزارش محسن را با اینکه تیک خورده ولی بهم نمیده(فقط در صورتی میده که اون اسم توی دیتا گرید ویو قابل رویت باشه)



    try
    {

    DataTable dt = new DataTable();
    dt.Columns.Add(new DataColumn("ID", typeof(string)));
    dt.Columns.Add(new DataColumn("kodM", typeof(string)));
    dt.Columns.Add(new DataColumn("s1", typeof(string)));


    int dtRow = 0;
    for (int row = 0; row < radGridView1.Rows.Count; row++)
    {
    if ((bool)radGridView1.Rows[row].Cells[0].Value == true)
    {
    dt.Rows.Add();
    dt.Rows[dtRow][0] = radGridView1.Rows[row].Cells[1].Value.ToString();
    dt.Rows[dtRow][1] = radGridView1.Rows[row].Cells[2].Value.ToString();
    dt.Rows[dtRow][2] = radGridView1.Rows[row].Cells[3].Value.ToString();


    dtRow += 1;
    }
    }

    if (dt.Rows.Count > 0)
    {
    StiReport report = new StiReport();
    if (radioButton1.Checked)
    report.Load(Application.StartupPath + "\\Report.mrt");
    else
    report.Load(Application.StartupPath + "\\Report2.mrt");
    report.RegBusinessObject("tip", dt);
    report.Show();
    }

    }

    catch (Exception)
    {
    MessageBox.Show("????? ??? ???? ???");
    }
    _myList.Clear();
    }



    البته این قطعه کد را توی سرچ زدم



    //ایجاد یک لیست برای ذخیره



    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    if (Convert.ToBoolean(row.Cells["Column1"].Value))
    {
    _myList.Add(row.Cells["Column2"].Value.ToString());
    }
    }
    DataSet ds = new DataSet();
    SqlDataAdapter adp = new SqlDataAdapter();
    adp.SelectCommand = new SqlCommand();
    adp.SelectCommand.Connection = con;
    adp.SelectCommand.CommandText = "Select *from tip where name like '%' + @S + '%'";
    adp.SelectCommand.Parameters.AddWithValue("@S", name.Text + "%");
    adp.Fill(ds, "tip");
    radGridView1.DataSource = ds;
    radGridView1.DataMember = "tip";



    for (int row = 0; row < radGridView1.Rows.Count; row++)
    radGridView1.Rows[row].Cells[0].Value = false;

    //حالا بعد از لود مجدد اطلاعات:
    foreach (string str in _myList)
    {
    foreach (DataGridViewRow row in radGridView1.Rows)
    {
    if (str == row.Cells["Column2"].Value.ToString())
    {
    //تیک زدن مجدد ردیفها
    row.Cells["Column1"].Value = true;
    }


    }

  30. #30

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    خب این عمل باید هم به این شکل صورت بگیره وقتی داری سرچ میکنی فقط نتایج مرتبط با سرچ باید بهت نشون داده بشه قرار نیست رکوردی غیر از اون واکشی بشه

  31. #31

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    فکر کنم بد منظورمو رسوندم
    من یه گزارش از یک نفر از کلاس یک و یک نفر از کلاس دو را باهم میخام(با استیمول سافت)

    وقتی نفر کلاس یک را انتخاب می کنم و گزارش میزنمه همه چی اوکیه
    ولی
    وقتی میرم کلاس دو را سرچ میزنم اونی که کلاس یک تیک زدم را بهم گزارششو نمیده





    وقتی که از دستور top برای نمایش دیتا گرید استفاده می کنم با مشکل روبرو میشم(چون در غیر اینصورت همه را در دیتا گرید نمایش میده و مشکلی نیست). میخام که هر چی را تیک زدم بهم گزارش بده (حتی اگه توی 10 رکورد اول نمایش نده)

    راهی هست؟

    منظورم اینه که من تیک میزنم ولی با عوض کردن سرچ رکوردهایی که دیتا گرید نمایش میده عوض میشه و تیکم با اینکه سرجاش هست ولی گزارش بهم نمیده.
    میخام هر چی سرچ زدم و تیک زدم بهم گزارششو بده


    توی شکل زیر من کریم را سرچ زدم و اونو تیک زدم ولی میزنم گزارش نمی تونم گزارش بگیرم.چون سرچمو عوض کردم.ولی اون تیک هنوز سرجاش هست.



    (من این تایپیکو راه انداختم که فقط بتونم گزارش با سرچ های متفاوت بگیرم همش ردیف شد فقط این تیکه اخرش مونده)
    آخرین ویرایش به وسیله hamidtmu : شنبه 04 خرداد 1398 در 21:12 عصر

  32. #32

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    شما نحوه گزارشگیریت به چه شکله؟ یعنی دقیقا میخوای از چی گزارش تهیه کنی و روالت به چه صورته؟ تنها راهی که به ذهنم میرسه اینه که طبق لیست آیدی ها یعنی _myList باید گزارش رو تهیه کنی

  33. #33

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    برای نمایش در فرم، میتونید یگ دیتاگرید دیگه اضافه کنید. سطرهای تیک خورده را از دیتاگرید اول به دیتاگرید دوم اضافه کنید.

  34. #34

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    شما نحوه گزارشگیریت به چه شکله؟ یعنی دقیقا میخوای از چی گزارش تهیه کنی و روالت به چه صورته؟ تنها راهی که به ذهنم میرسه اینه که طبق لیست آیدی ها یعنی _myList باید گزارش رو تهیه کنی
    --------------------
    من برای دانش آموزان کارنامه می خوام چاپ کنم

    هر دانش آموز یک ردیف هست و من میخام دانش آموزان متعددی را جستجو کنم و براشون کارنامه چاپ کنم
    ---
    همه چی مرتبه فقط وقتی اسمی توی دیتا گرید ویو نمایش داده نشه اون را بهش کارنامه نمیده(با این که شما اون را سرچ زدید و تیک زدید ) برای اینکه کارنامه بتونییم بهش بدیم باید وقتی که سرچ زدیم و اسم مورد نظر پیدا شد تیک بزنیم و همون موقع گزارش بگیریم . چون اگه سرچ کس دیگه ای را داشته باشیم از صفحه اسمش خارج میشه


    من میخام همه اونایی که انتخاب کردم و توی مای لیست ( _myList) هستند را بهم گزارش بده

  35. #35

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    برای نمایش در فرم، میتونید یگ دیتاگرید دیگه اضافه کنید. سطرهای تیک خورده را از دیتاگرید اول به دیتاگرید دوم اضافه کنید.
    اینم یه مشکل داره .اول اینکه یک دیتا گرید اضافه میاد توی فرم
    دوم اینکه تیک هایی که منصرف شدیم از گزارش برداریم به چه صورت از دیتا گرید 2 برداریم

  36. #36

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

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

  37. #37
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    شما یه دکمه به فرم اضافه کنید با عنوان مشاهده لیست انتخابی که با زدن اون دکمه یک فرم جدید باز میشه و _myList رو به این فرم پاس می دید و لیست افراد در یک گرید نمایش داده میشه. در هر ردیف این گرید هم یک دکمه حذف قرار بدید که افراد اضافی قابل حذف باشن.
    حالا در همین فرم جدید هم می تونید 2 دکمه قرار بدید. یکی برای برگشت به فرم اصلی و دومی هم چاپ لیست. فقط اگر کاربر بخواد به فرم قبلی برگرده شما باید لیست قبلی رو آپدیت کنید تا موارد حذف شده هم در لیست اعمال بشه.

    ---------------------------- ویرایش

    به نظرم بهتره از یک گرید کمکی در کنار یا پایین گرید اصلی استفاده کنید و همزمان که کاربر ردیفهای مورد نظر رو انتخاب می کنه در گرید کمکی هم مشخصات افراد بیاد. در این صورت کاربر بهتر متوجه میشه که چه کسانی رو انتخاب کرده یا نکرده، روش قبلی که گفتم یه مقدار کار کاربر رو سخت میکنه.
    البته یک روشی هم هست شاید خود شما هم دیده باشید که دو لیست در کنار هم هستند و دو تا دکمه فلش چپ و راست هم بین اون دو تا لیست (گرید یا لیست باکس) هست که با زدن اون دکمه ها میشه شخصی رو به لیست نهایی اضافه کرد یا از اون حذف کرد. این هم یک روش پیاده سازی هست.
    آخرین ویرایش به وسیله Mahmoud Zaad : دوشنبه 06 خرداد 1398 در 08:43 صبح

  38. #38

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    [QUOTE]
    نقل قول نوشته شده توسط Mahmoud Zaad مشاهده تاپیک
    شما یه دکمه به فرم اضافه کنید با عنوان مشاهده لیست انتخابی که با زدن اون دکمه یک فرم جدید باز میشه و _myList رو به این فرم پاس می دید و لیست افراد در یک گرید نمایش داده میشه. در هر ردیف این گرید هم یک دکمه حذف قرار بدید که افراد اضافی قابل حذف باشن.
    حالا در همین فرم جدید هم می تونید 2 دکمه قرار بدید. یکی برای برگشت به فرم اصلی و دومی هم چاپ لیست. فقط اگر کاربر بخواد به فرم قبلی برگرده شما باید لیست قبلی رو آپدیت کنید تا موارد حذف شده هم در لیست اعمال بشه.

    ---------------------------- ویرایش

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



    نمیشه با یک دستور گفت اونایی که توی مای لیست هستند گزارش داده شوند؟

  39. #39

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    دوست عزیز گفتم دیگه برای گزارشت به جای دیتاگرید از همون مای لیست استفاده کن، آیدی دانش آموزای موردنظرت که تو مای لیست هست خب پس طبق همون کارتو راه بنداز
    این فکر می کنم منطقی تره ولی نمیدونم به چه صورت

    دیتا گریدم ستون زیاد داره و اگه دو تا بشن لودش اذیت میکنه

  40. #40
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    چند قدم اون ور تر
    پست
    1,731

    نقل قول: حفظ شدن حالت چک باکس های گرید با تغییر در شرایط جستجو

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

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

  1. سوال: دادن تایم به اسکرول و تغییر استایل
    نوشته شده توسط taktos در بخش jQuery
    پاسخ: 1
    آخرین پست: سه شنبه 25 آذر 1393, 16:27 عصر
  2. پاسخ: 13
    آخرین پست: جمعه 20 تیر 1393, 22:29 عصر
  3. سوال: بهترین راه برای تغییر استایل های بوت استرپ چیست؟
    نوشته شده توسط .:Mahdi:. در بخش طراحی وب (Web Design)
    پاسخ: 3
    آخرین پست: سه شنبه 27 اسفند 1392, 16:57 عصر
  4. سوال: تغییر استایل منوی افقی در تغییر رزولوشن
    نوشته شده توسط ArtMiz در بخش طراحی وب (Web Design)
    پاسخ: 6
    آخرین پست: یک شنبه 05 خرداد 1392, 23:17 عصر
  5. اعمال تغییربدون رستارت
    نوشته شده توسط lord_viper در بخش برنامه نویسی در Delphi
    پاسخ: 0
    آخرین پست: پنج شنبه 13 دی 1386, 12:34 عصر

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

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