Trang 2 trên tổng số 3 Đầu tiênĐầu tiên 123 Cuối cùngCuối cùng
Từ 11 tới 20 trên tổng số 29 kết quả

Đề tài: Phân Quyền (Phần I : Phân quyền trên Menu)

  1. #11
    Ngày gia nhập
    02 2008
    Nơi ở
    Ho Chi Minh City
    Bài viết
    141

    Mặc định Phân Quyền (Phần I : Phân quyền trên Menu)

    Thanks hoavokhuyetcntt,

    Sorry mọi người. Đúng là có lỗi khi tôi modify lại code.
    Mọi người có thể upload code mới nhất về để chạy (trong thư mục Db có luôn cả DB files chạy bằng SQL Express do đó mọi người có thể chạy ngay demo mà không cần phải sửa lại ConnectionString cũng như restore DB).
    Đã được chỉnh sửa lần cuối bởi phucpham : 09-06-2010 lúc 11:05 AM.

  2. #12
    Ngày gia nhập
    06 2010
    Bài viết
    4

    Cho mình hỏi, tại sao làm như cách của bạn, sau khi lấy dữ liệu cho các DataGridView sao nó không cho mình sort trên các cột nhỉ?

  3. #13
    Ngày gia nhập
    02 2008
    Nơi ở
    Ho Chi Minh City
    Bài viết
    141

    Hi giamaham,

    Tôi không hiểu ý bạn nói về phần nào?

  4. #14
    Ngày gia nhập
    06 2010
    Bài viết
    4

    Thí dụ như ở form frmUser bạn viết code để lấy dữ liệu cho datagridview grdUserList như sau:
    private void SetGridViewDataSource()
    {
    userCollection = userBS.GetListUser();
    grdUserList.DataSource = userCollection;
    }
    Khi Form frmUser Show, dữ liệu từ bảng tblUser được nạp cho datagridview grdUserList. Ý mình muốn hỏi làm sao để sort trên các cột ở Datagridview grdUserList ? (Thường thì trên HeaderText của DatagirdviewTextBoxColumns của Datagirdview nó cho mình click mouse để Sort mà). Cảm ơn PhucPham trước nhé!

    Nơi mình vẽ vòng tròn trên hình đó

    Đã được chỉnh sửa lần cuối bởi giamaham : 05-07-2010 lúc 10:03 PM. Lý do: Điều chỉnh câu hỏi

  5. #15
    Ngày gia nhập
    02 2008
    Nơi ở
    Ho Chi Minh City
    Bài viết
    141

    Tại vì tôi sử dụng 1 Collection làm Data Source cho DataGridView do đó nó không sort được. Nếu bạn muốn Sort đối với 1 Data Source của DataGridView như 1 Collection nào đó, ArrayList, ... thì bạn có thể tham khảo link sau :
    http://www.timvw.be/presenting-the-s...ebindinglistt/

    - Còn nếu bạn để Data Source là DataTable chẳng hạn (hay bạn Add từng Item vào DataGridView) thì nó sẽ hỗ trợ Sort cho bạn.

  6. #16
    Ngày gia nhập
    06 2010
    Bài viết
    4

    Mặc định Phân Quyền (Phần I : Phân quyền trên Menu)

    Thường thì mình sử dùng DataTable hoặc Dataset thì không vấn đề gì, nhưng dùng Collection (Cái này mình cũng tham khảo Source TheBeerHouse) thì bị tình trạng như trên. Bài của bạn rất hay, mình đã học được nhiều từ bài viết này, chẳng hạn như show form login sau đó đóng lại rồi mới new form main,dùng form base, bộ nút thêm, sửa, xóa rất hay vv... Cảm ơn bạn đã giúp, mong bạn đóng góp nhiều cho cộng đồng.

  7. #17
    Ngày gia nhập
    07 2010
    Bài viết
    3

    bài của bạn rất hay. đúng cái mình đang cần .thanks chủ topic hen !!

  8. #18
    Ngày gia nhập
    04 2011
    Bài viết
    32

    Trích dẫn Nguyên bản được gửi bởi dieucay555 Xem bài viết
    Có cái cách nữa về cái menu phân quyền này, lần trước có 1 bạn gửi cho tui, share luôn cho anh em tham khảo
    bác "dieucay555" cho code nhưng lại ko cho pass rồi.

  9. #19
    Ngày gia nhập
    11 2010
    Bài viết
    2

    Hic! Không có nút like, thanks a Phúc Phạm nhiều, nhờ mấy bài viết của anh mà em học được nhiều thứ ^^

  10. #20
    Ngày gia nhập
    04 2011
    Bài viết
    32

    Trích dẫn Nguyên bản được gửi bởi phucpham Xem bài viết
    Chào các bạn,

    Như tất cả chúng ta biết các ứng dụng thông thường đều có nhu cầu phân quyền cho các user (các nhóm người sử dụng) nghĩa là user sau khi đăng nhập vào ứng dụng thì user đó được phép sử dụng những màn hình nào (thường thì truy cập từ menu) và những chức năng nào trên màn hình đó (phân quyền trên Form : Vấn đề này tôi sẽ viết ở Phần II).

    Trong bài viết này tôi sẽ chia sẻ với các bạn 1 cách thức phân quyền trên menu. Ý tưởng của cách làm này như sau :
    - Đầu tiên chúng ta thiết kế 5 tables sau :

    + User : Table nào chứa các thông tin về người sử dụng.
    + Group : Chứa thông tin về nhóm người sử dụng.
    + UserGroup : Cho biết users thuộc về group(s) nào.
    + Menu : Chứa thông tin về menu chính (dữ liệu được lấy từ menu được design trên Form Main) của ứng dụng. Menu chính khi thiết kế sẽ cần có thêm 1 giá trị bắt buôc như sau: Nếu menuItem đó liên kết tới 1 Form nào đó thì cần set value (tên Form) cho thuộc tính Tag của MenuItem này.
    + MenuGroup : Cho biết 1 nhóm nào đó thì được phép sử dụng những menu nào của ứng dụng.

    Hình Database Diagram :


    - Sau khi đã có các tables trên thì chúng ta sẽ làm 3 Forms (frmUser, frmGroup, frmAuthorizarion) để danh cho việc thêm, sửa, xóa dữ liệu trên 4 tables : User, Group, UserGroup & MenuGroup.

    Form chính dùng cho việc phân quyền là frmAuthorization :
    Hình Form Authorization :


    - Trên Form này có 2 phần : 1 bên là list các group (TreeView) & 1 bên là Menu được BindData từ table Menu trong DB.
    - Khi user click vào 1 group nào đó thì các menuItem mà group đó được phép sử dụng sẽ được checked.
    - Khi [admin user] click nút sửa thì sẽ cho phép họ phân quyền trên menu bằng cách click trên từng menuItem.

    Khi click menuItem này sẽ có 2 tình huống xảy ra :
    + Nếu menuItem chưa được chọn thì nó sẽ được chọn (checked của menuItem là true và tất cả các subMenu(nếu có) sẽ được checked theo).
    + Nếu menuItem đã được chọn thì sẽ bỏ checked của menuItem này cũng như tất cả các subMenu (nếu có).

    Sau khi họ sửa xong (phân quyền) thì sự thay đổi đó sẽ được lưu xuống DB bằng cách Click Save Button.

    => Mỗi lần các user chạy chương trình thì sẽ lấy dữ liệu từ DB để Bind cho Menu chính của chương trinh (nếu user không có quyền đối với Menu nào thì menu đó sẽ bị Disabled hoặc không hiện ra).

    Các bạn có thể coi chi tiết hơn trong attached file : Bao gồm Database và project hoàn chỉnh. Muốn chạy project này trước tiên phải restore Database tên là Framework.bak nằm trong thư mục DB. Sau đó sửa lại ConnectionString trong file app.config tương ứng với máy của mọi người.


    Note :
    Khi chạy lần đầu tiên thì table Menu trong DB chưa có giá trị do đó cần phải Insert dữ liệu từ Menu đã được Design trên Form Main xuống DB bằng cách click button [Update Menu] trên Form Main này. Button này được hiển thị khi giá trị DEBUGMODE trong file app.config là true.

    ====================Bổ Sung========================
    Khi các bạn tạo thêm các Form tương ứng với các Menu Item mới thì các bạn viết thêm code để gọi Form này trong sự kiện MenuItem_Click (sự kiện này được gọi khi Bind Menu từ DB lên).

    Giả sử tôi có 1 Form mới tên là frmTest và 1 Menu mới là TEST
    Function MenuItem_Click - Cần viết thêm code trong function này:
    Visual C# Code:
    1. private void MenuItem_Click(object sender, System.EventArgs e)
    2.         {
    3.             if (((ToolStripMenuItem)sender).Tag == null) return;
    4.             string frmName = ((ToolStripMenuItem)sender).Tag.ToString();
    5.             Form frm = null;
    6.             switch (frmName.ToLower())
    7.             {
    8.                 #region "System"                    
    9.                 #endregion
    10.  
    11.                 #region "TEST"
    12.                 case "frmtest"://chữ thường hết
    13.                     frm = new frmTest();
    14.                     break;
    15.                 #endregion
    16.             }
    17.  
    18.             if (frm != null)
    19.             {
    20.                 frm.WindowState = FormWindowState.Maximized;                
    21.                 frm.MdiParent = this;                
    22.                 frm.Show();
    23.             }
    24.         }

    Còn đây là function ShowSubMenu - Bind Menu từ DB lên
    Visual C# Code:
    1. //Set MenuItem Click event
    2. subItem.Click += new System.EventHandler(MenuItem_Click);
    ================================================== =


    * Cái hình Form Authorization do trước đây không lấy được từ MediaFire do đó tôi up hình mới đã bao gồm cả phần phân quyền cho methods nên các bạn download về chạy sẽ không giống như hình trên mà chỉ có 1 TreeView ở bên trái và 1 toolStrip menu ở bên phải thôi. Hy vọng cuối tuần này sẽ post được tiếp Phần II.

    Phần II : http://forums.congdongcviet.com/showthread.php?t=28712
    Bài viết rất hay, nhưng theo mình không cần bảng tblGroupUser mà chỉ cần thêm trường GroupID vào bảng tblUser là ok.

Các đề tài tương tự

  1. Phân Quyền (Phần II : Phân Quyền Trên Methods (Form))
    Gửi bởi phucpham trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 45
    Bài viết cuối: 08-10-2016, 10:29 PM
  2. Login hiển thị danh sách quyền lền làm menu
    Gửi bởi lengocktv trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 04-08-2011, 08:21 AM
  3. Cách phân quyền cho Menu làm bằng sitemap ?
    Gửi bởi tomcat trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 22-06-2011, 09:29 PM
  4. Phân quyền user với control menu ?
    Gửi bởi tomcat trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 20-06-2011, 09:51 PM
  5. Phân quyền Menu và form
    Gửi bởi dangtrang2246 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 23-08-2008, 12:31 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn