// Loads data from the database and binds the UI controls.
        private void BindGrid(int editIndex)
        {
            MainSecurity objSercu = new MainSecurity();
            Role         objrole  = objSercu.GetRole(Page.User.Identity.Name);

            using (MainDB db = new MainDB()) {
                int    totalRows  = 0;
                int    startIndex = gridUser.CurrentPageIndex * gridUser.PageSize;
                string sort       = "";
                if (this.Sort.Length > 0)
                {
                    sort = this.Sort + " " + this.SortDirection;
                }
                string where = "";

                string strSearchName = txtSearch.Text.Trim().ToLower();

                if (ddlChannel.SelectedIndex >= 0)
                {
                    //lấy danh sách user của 1 channel
                    Channel_UserRow[] row    = db.Channel_UserCollection.GetByChannel_ID(Convert.ToInt32(ddlChannel.SelectedValue));
                    string            inuser = "";
                    if (row != null && row.Length > 0)
                    {
                        //duyệt qua danh sách user của 1 channel
                        foreach (Channel_UserRow userRow in row)
                        {
                            // Xu ly viec tim kiem theo UserName
                            // -- Neu Username nay trung voi keyword thi moi dc xu ly tiep
                            // -- Con ko co keyword thi hien thi all
                            if (strSearchName != "" && userRow.User_ID.ToLower().IndexOf(strSearchName) == -1)
                            {
                                continue;
                            }


                            // Neu la account Quan Tri kenh thi ko nhin thay account Channelvn va Admin
                            if (objrole.isQuanTriKenh && objrole.isAdministrator == false)
                            {
                                if (userRow.User_ID == "channelvn" || userRow.User_ID == "admin")
                                {
                                    continue;
                                }
                            }

                            //lọc theo role
                            if (ddlRole.SelectedIndex > 0)
                            {
                                Channel_User_RoleRow[] curr = db.Channel_User_RoleCollection.GetByCU_ID(userRow.CU_ID);
                                if (curr != null && curr.Length > 0)
                                {
                                    //duyệt qua các role 1 user có
                                    foreach (Channel_User_RoleRow roleRow in curr)
                                    {
                                        //nếu có role nào trùng với role cần lọc
                                        if (roleRow.Role_ID == Int32.Parse(ddlRole.SelectedValue))
                                        {
                                            //đưa vào danh sách cần select
                                            inuser += "'" + userRow.User_ID + "',";
                                            break;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                //đưa vào danh sách cần select
                                inuser += "'" + userRow.User_ID + "',";
                            }
                        }
                        inuser += "'" + Const.Global_Admin + "','" + Const.TONG_BIEN_TAP + "',";
                        Business.User User    = new Business.User();
                        string        inWhere = User.CheckDupplicate(inuser);
                        where = "User_ID in (" + inWhere.Remove(inWhere.Length - 1) + ")";
                    }
                    else
                    {
                        where = "User_ID in('" + Const.Global_Admin + "','" + Const.TONG_BIEN_TAP + "')";
                    }
                }

                if (objrole.isQuanTriKenh && objrole.isAdministrator == false)
                {
                    where += " AND User_ID NOT IN ('channelvn','admin') ";
                }

                DataTable table = db.UserCollection.GetAsDataTable(where, sort, startIndex, gridUser.PageSize, ref totalRows);

                int viewStateFirst = gridUser.CurrentPageIndex * gridUser.PageSize;
                int viewStateLast;

                if (gridUser.AllowPaging)
                {
                    viewStateLast = Math.Min(viewStateFirst + gridUser.PageSize, table.Rows.Count);
                }
                else
                {
                    viewStateLast = table.Rows.Count;
                }

                gridUser.VirtualItemCount = totalRows;
                gridUser.DataSource       = table;
                ViewState["dtuser"]       = table;
                gridUser.EditItemIndex    = editIndex;
                gridUser.DataBind();

                ShowHideButton();
            }
        }