dev 控制元件使用技巧,待完善
阿新 • • 發佈:2019-01-09
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