1. 程式人生 > >dev 控制元件使用技巧,待完善

dev 控制元件使用技巧,待完善

1、treeList不顯示父級子級結構,如grid使用

屬性:
Options->OptionsView 下的 ShowPreview:True,ShowRoot:False
資料 下的 KeyFieldName:ID,ParentFiledName:ID。
去掉選擇列:OptionsView下的 “ShowIndicator=false”
checkbox父子聯動:treeList1.OptionsBehavior.AllowRecursiveNodeChecking="true"

2、繫結GridLookUpEdit

 public static void BindGNLB(GridLookUpEdit txtGNLB)
        {
            txtGNLB.Text = "";
            txtGNLB.Properties.View.OptionsBehavior.AutoPopulateColumns = false;


            BLL.KZ_GNLB bll = new BLL.KZ_GNLB();          


            DataTable dt = bll.GetList("", "PXH");


            txtGNLB.Properties.DataSource = dt;  //資料來源
            txtGNLB.Properties.DisplayMember = "GNMC"; //繫結Text顯示的欄位源名稱
            txtGNLB.Properties.ValueMember = "GNID"; //繫結Value欄位源名稱


            txtGNLB.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True;
            txtGNLB.Properties.View.BestFitColumns();
            txtGNLB.Properties.ShowFooter = false;
            txtGNLB.Properties.View.OptionsView.ShowAutoFilterRow = true; //顯示不顯示grid上第一個空行,也是用於檢索的應用
            txtGNLB.Properties.View.OptionsFilter.AllowFilterEditor = false;
            txtGNLB.Properties.AutoComplete = false;
            txtGNLB.Properties.ImmediatePopup = true;
            txtGNLB.Properties.PopupFilterMode = DevExpress.XtraEditors.PopupFilterMode.Contains;
            txtGNLB.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard; //配置,用於像文字框
        }    

 開啟 text檢索 

txtGNLB.Properties.DisplayMember = "DISPLAY"; //繫結Text顯示的欄位源名稱
 DevExpress.XtraGrid.Columns.GridColumn colBH = new DevExpress.XtraGrid.Columns.GridColumn();
            DevExpress.XtraGrid.Columns.GridColumn colMC = new DevExpress.XtraGrid.Columns.GridColumn();
           // DevExpress.XtraGrid.Columns.GridColumn colYWM = new DevExpress.XtraGrid.Columns.GridColumn();
            DevExpress.XtraGrid.Columns.GridColumn colDisplay = new DevExpress.XtraGrid.Columns.GridColumn();            


            setGridColumn(colBH, "編號", "BH", "colBH", 100);
            setGridColumn(colMC, "科室", "MC", "colMC", 100);
            //setGridColumn(colYWM, "音位碼", "YWM", "colYWM", 100);
            setGridColumn(colDisplay, "DISPLAY", "DISPLAY", "colDisplay", 100);
            colDisplay.Visible = false;


            gridLookUpEdit.Properties.View.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] {
            colBH,
            colMC,colDisplay});
 private void setGridColumn(DevExpress.XtraGrid.Columns.GridColumn column
     , string Caption, string FieldName, string Name, int width)
        {
            column.AppearanceHeader.Options.UseTextOptions = true;
            column.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center;
            column.Caption = Caption;
            column.FieldName = FieldName;
            column.MinWidth = width;
            column.Name = Name;
            column.Visible = true;
            column.VisibleIndex = 0;
            column.Width = width;
        }

 3、繫結ComboBoxEdit 

 public static void BindRoleGroup(ComboBoxEdit ddlRoleGroup)
        {
            Dictionary<string, string> dic=  MyConst.ROLEGROUP.GetRoleGroup();


            ddlRoleGroup.Properties.Items.Add(new ComboBoxHelp("", "-請選擇-"));
            foreach(var item in dic)
            {
                ddlRoleGroup.Properties.Items.Add(new ComboBoxHelp(item.Value, item.Key));
            }


            ddlRoleGroup.Properties.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.DropDown;
            ddlRoleGroup.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;


        }

4、NavBarConrol動態載入使用者控制元件

 public mainForm()
        {
            InitializeComponent();

            if (LoginUser.GROUPID == "0") // 開發公司
            {
                navBarMenu.Groups.Clear();
                this.Text = this.Text + "   開發公司 " + LoginUser.CZYXM;

                MyConst.AdminMenu adminMenu = new MyConst.AdminMenu();
                DataTable dt = adminMenu.GetAdminMenu();
                NavBarGroup group;
                DataRow[] pRows = dt.Select("PGNID='0'");
                for (int i = 0; i < pRows.Length; i++) {
                    group = new NavBarGroup();
                    group.Caption = pRows[i]["GNMC"].ToString();
                    group.Name = pRows[i]["AssemblyClass"].ToString();

                    this.navBarMenu.Groups.AddRange(new NavBarGroup[] {
                    group});

                    BindchildMenu(group, dt, pRows[i]["GNID"].ToString());
                }
            }
            else
            {
            }
        }

 void BindchildMenu(NavBarGroup group,DataTable dt, string pGNID)
        {
            DataRow[] cRows = dt.Select("PGNID='" + pGNID + "'");
            NavBarItem barItem;
            for (int i = 0; i < cRows.Length; i++)
            {

                barItem = new NavBarItem();
                barItem.Caption = cRows[i]["GNMC"].ToString();
                barItem.Name = cRows[i]["AssemblyClass"].ToString();

                barItem.LinkClicked += new DevExpress.XtraNavBar.NavBarLinkEventHandler(this.lbtn_LinkClicked);

                group.ItemLinks.AddRange(new NavBarItemLink[] {
                    new NavBarItemLink(barItem)});

            }
        }
 // 載入事件
        private void lbtn_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            NavBarItem navBarItem = sender as NavBarItem;
            UserControl c;
            if (!dic_Controls.TryGetValue(navBarItem.Name, out c))
            {
                c = Assembly.Load("Hospital").CreateInstance(navBarItem.Name) as UserControl;
                dic_Controls.Add(navBarItem.Name, c);
            }          

            addControl(c);
        } 

/// <summary>
        /// 載入控制元件
        /// </summary>
        /// <param name="control"></param>
        private void addControl(Control control)
        {
            clearControl();

            control.Size = this.panelRight.Size;

            panelRight.Controls.Clear();

            panelRight.Controls.Add(control);
        }

5、dxValidationProvider 控制元件的使用

 /// <summary>
        /// 驗證是否為空
        /// </summary>
        private void ValidatEmptyUser()
        {
            dxValidationProvider1.ValidationMode = ValidationMode.Manual;
            dxValidationProvider1.Validate();

            Validate(txtCZYBM, "該欄位不能為空!");
            Validate(this.txtLOGID, "該欄位不能為空!");
            Validate(this.txtCZYXM, "該欄位不能為空!");
            Validate(this.txtROLE, "該欄位不能為空!");
            Validate(this.txtPassword, "該欄位不能為空!");
            Validate(this.txtConfirmPassword, "該欄位不能為空!");
        }

        /// <summary>
        /// 驗證控制元件樣式
        /// </summary>
        /// <param name="c"></param>
        /// <param name="ErrorText"></param>
        private void Validate(Control c, string ErrorText)
        {
            ConditionValidationRule notEmpty = new ConditionValidationRule();
            notEmpty.ConditionOperator = ConditionOperator.IsNotBlank;
            notEmpty.ErrorText = ErrorText;
            dxValidationProvider1.SetValidationRule(c, notEmpty);
            dxValidationProvider1.SetIconAlignment(c, ErrorIconAlignment.MiddleRight);
        }


6、GridControl 選中行下追加一行 

var SQL = "SELECT ROWNUM AS XH,BH AS KSBH,MC AS FWKS FROM YHWXQ_V_KS where LB='1'";

            grid_dataTable = DAL.HISControl.CreateDALControl().GetDataTable(SQL);

            this.gridPB.DataSource = grid_dataTable;

 // 新增、追加行
        private void btnXZ_Click(object sender, EventArgs e)
        {
            DataRowView dataRowView = (DataRowView)this.advBandedGridView1.GetFocusedRow();
            
            // 當前序號
            int XH = Int32.Parse(dataRowView["XH"].ToString());
            
            // 當前服務科室
            string FWKS = dataRowView["FWKS"].ToString();

            // 當前服務科室編號
            string KSBH = dataRowView["KSBH"].ToString();

            // 新增行(序號、服務科室、科室編號)
            DataRow newRow = grid_dataTable.NewRow();
            newRow["XH"] = XH+1;
            newRow["FWKS"] = FWKS;
            newRow["KSBH"] = KSBH;

            int max_XH = Int32.Parse(grid_dataTable.Compute("max(XH)","").ToString());

            for (int i = max_XH; i > XH; i--)
            {
                grid_dataTable.DefaultView[i - 1]["XH"] = i + 1;
            }

            grid_dataTable.Rows.Add(newRow);
            grid_dataTable.DefaultView.Sort = "XH";
            this.gridPB.DataSource = grid_dataTable.DefaultView;
        }
GridControl Bands 凍結列  Fixed =left