0 امتیاز

سلام

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

سورس من سی شارپ هست و دیتابیس من هم اکسس. ممنون میشم دوستان لطف کنند و پاسخ بدهند.

من گرید ویو رو به شکل زیر پر میکنم:

        private void BindDataTahsilatazad()
        {
            DataTable dt = new DataTable();
            DataBase db = new DataBase();
            dt = db.MySelect("select * from Tbl_tahsilat where mellicode='" + txt_mellicode.Text + "'");
            dataGridtahsilat_azad.DataSource = dt;
            dataGridtahsilat_azad.Columns[3].HeaderText = "کد ملی";
            dataGridtahsilat_azad.Columns[4].HeaderText = "استان";
            dataGridtahsilat_azad.Columns[5].HeaderText = "شهر";
            dataGridtahsilat_azad.Columns[6].HeaderText = "مدرسه";
            dataGridtahsilat_azad.Columns[7].HeaderText = "مستمع آزاد";
            dataGridtahsilat_azad.Columns[8].HeaderText = "غیررسمی";
            dataGridtahsilat_azad.Columns[9].HeaderText = "با استاد";
            dataGridtahsilat_azad.Columns[10].HeaderText = "سایر";
            dataGridtahsilat_azad.Columns[2].Visible = false;
            dataGridtahsilat_azad.Columns[3].Visible = false;
            //countpersonel();
        }

در دیتابیس هم یه جدولی دارم که ستون های گرید رو در اون جدول وارد کردم.

2 پاسخ

+1 امتیاز

سلام

فقط یک خط

البته برات یه سمپل ساده نوشتم اونو میفرستم

همین خط
  this.dataGridtahsilat_azad.Columns["tell"].Visible = false;

برای ذخیره این تنظیمات چند تا راه هست ساده ترینش اینه

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

 private void button2_Click(object sender, EventArgs e)
        {
            this.dataGridtahsilat_azad.Columns["tell"].Visible = false;
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            using (OleDbConnection cnn=new OleDbConnection(connectionStr))
            {
                using (OleDbCommand cmd=new OleDbCommand("Select * From tbltest",cnn))
                {
                    using (OleDbDataAdapter adap=new OleDbDataAdapter(cmd))
                    {
                       
                        using (DataTable dt=new DataTable())
                        {
                            adap.Fill(dt);
                            dataGridtahsilat_azad.DataSource = dt;
                        }
                    }
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
                this.dataGridtahsilat_azad.Columns["ID"].Visible = false;
           
        }
    }

 

 

http://www.w3-farsi.com/forum/?qa=blob&qa_blobid=748294677869695068

فقط اگر لطف کنید بهم بگید چطوری باید در یه فایل ذخیره کنم که هنگام لود بررسی کنه ممنون میشم؟
توسط (252 امتیاز) 4 13 22

ببینید دوباره سورس رو ویرایش کردم

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

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

روش دومم اینه که بررسی کنه هر کاربری وارد شد ستون مربوطه رو مخفی کنید

کدهای مربوط به لاگین توو کل پروژه تاثیری نداره فقط کافیه دیتابیس بهش اضافه کنی هر یوزری وارد بشه اونو به صفحه بعد ارسال میکنه

 

 label1.Text = txt1 + "" + " user login";
            //این نوع اول
            if (File.Exists("user.dat"))
            {
                this.dataGridtahsilat_azad.Columns["ID"].Visible = false;
                button1.Visible = false;
            }

            //اینم روش دوم
            if (txt1 == "Ali")
            {
                this.dataGridtahsilat_azad.Columns["tell"].Visible = false;
            }
        }

http://www.w3-farsi.com/forum/?qa=blob&qa_blobid=6415391532007365090

توسط (7,164 امتیاز) 4 7 141

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

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

ببین اول متد رو مینویسی بعد فراخوانی

 

using System.Security.Principal;
 public static bool isadmin()
        {
            WindowsIdentity id = WindowsIdentity.GetCurrent();
            WindowsPrincipal princ = new WindowsPrincipal(id);
            return princ.IsInRole(WindowsBuiltInRole.Administrator);

        }
این نوع یوزر رو چک میکنه

 private void button1_Click(object sender, EventArgs e)
        {
            listuser();
            string admin = isadmin() ? " User Is Administrator " : "User Access is Normal";
            label2.Text = admin;
        }
اینم همون متد رو فراخونی میکنه و نوع یوزر رو تشخیص میده

اینو حذف کن

            listuser();
توسط (7,164 امتیاز) 4 7 141
سلام

من دنبال سطح دسترسی نیستم، فقط می خوام امکانی در فرم اضافه بشه که کاربر بتونه ستون ها رو فعال یا غیر فعال کنه.

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

اگر زحمت بکشید روی این سورس انجام بدید ممنون میشم
http://s9.picofile.com/file/8334162392/mali_1menu.zip.html
توسط (252 امتیاز) 4 13 22

دوست عزیز طراحی زیبایی داری

 

منظورتون اینه که وقتی ستون های غیر فعال شدن تو این colomns_phonbookجدول چی نوشته بشه؟

ویرایش شده توسط
توسط (7,164 امتیاز) 4 7 141
0 امتیاز

سلام

موضوع حل شد اما..

من 2روش برای این کار در نظر گرفتم روش اول با استفاده از فایلهاسن بسیار راحت و سریع 

روش دوم که تو دیتابیس ذخیره میشه یا کلوزینگ فرم در درج مخفی کردن ستونها مشکلی نبود اما بخاطر یکی از کامپوننتهایی که بکاربردید در reader خطای پارامتر میده البته روی یه پروژه دیگه تست کردم مشکلی نبود 

http://s8.picofile.com/file/8334174234/mali_1menu.rar.html

سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,924 کاربر

دسته بندی ها

...