private void setdatasource(DevExpress.XtraGrid.Views.Grid.GridView gridView, MB.WinBase.Common.ColumnEditCfgInfo editInfo) { if (editInfo.DataSource == null) { return; } int index = 0; if (editInfo.LookUpColumns != null && editInfo.LookUpColumns.Count > 0) { gridView1Popup.OptionsView.ShowGroupPanel = editInfo.LookUpColumns.Count > 1; gridView.Columns.Clear(); for (int i = 0; i < editInfo.LookUpColumns.Count; i++) { MB.WinBase.Common.LookUpColumnInfo cInfo = editInfo.LookUpColumns[i]; DevExpress.XtraGrid.Columns.GridColumn col = gridView.Columns.Add(); col.FieldName = cInfo.FieldName; col.Caption = cInfo.Description; col.VisibleIndex = index++; col.Width = cInfo.ShowWidth; } } else { gridView1Popup.OptionsView.ShowGroupPanel = false; DevExpress.XtraGrid.Columns.GridColumn singleCol = gridView.Columns.Add(); singleCol.FieldName = editInfo.TextFieldName; singleCol.Caption = "请选择"; singleCol.VisibleIndex = 0; singleCol.Width = 100; } _ValueFieldName = editInfo.ValueFieldName; _TextFieldName = editInfo.TextFieldName; DataTable dtData = MB.Util.MyConvert.Instance.ToDataTable(editInfo.DataSource, string.Empty); dataViewLookup = dtData.DefaultView; //下面增加不选择的列(不需要增加不选择列,按空格就可以不选择) //createNullCheckRow(dataViewLookup); //通过下拉框来进行选择的目前需要进行约束,只能接受DataSet 的数据集。 gridPopup.DataSource = dtData.DefaultView; _LookUpDatas = new Dictionary <string, string>(); for (int i = 0; i < dataViewLookup.Count; i++) { _LookUpDatas.Add(dataViewLookup[i][_ValueFieldName].ToString(), dataViewLookup[i][_TextFieldName].ToString()); } }
/// <summary> /// 创建LookUP 编辑项 /// </summary> /// <param name="lookUpItem"></param> /// <param name="editInfo"></param> public void CreateLookUpEditItems(DevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit lookUpItem, MB.WinBase.Common.ColumnEditCfgInfo editInfo, string colDataType) { if (editInfo.DataSource == null) { return; } ; DataTable dtData = MB.Util.MyConvert.Instance.ToDataTable(editInfo.DataSource, string.Empty); if (dtData == null) { return; } //Copy一个新的DataTable作为数据源,这样就不影响原来的数据源 DataTable newData = dtData.Copy(); DevExpress.XtraEditors.Controls.LookUpColumnInfo[] lookUpCols = null; if (editInfo.LookUpColumns != null && editInfo.LookUpColumns.Count > 0) { lookUpCols = new DevExpress.XtraEditors.Controls.LookUpColumnInfo[editInfo.LookUpColumns.Count]; for (int i = 0; i < editInfo.LookUpColumns.Count; i++) { MB.WinBase.Common.LookUpColumnInfo cInfo = editInfo.LookUpColumns[i] as MB.WinBase.Common.LookUpColumnInfo; lookUpCols[i] = new DevExpress.XtraEditors.Controls.LookUpColumnInfo(cInfo.FieldName, cInfo.Description, cInfo.ShowWidth, DevExpress.Utils.FormatType.None, "", true, DevExpress.Utils.HorzAlignment.Near); } } else { lookUpCols = new DevExpress.XtraEditors.Controls.LookUpColumnInfo[] { new DevExpress.XtraEditors.Controls.LookUpColumnInfo(editInfo.TextFieldName, "请选择", 38, DevExpress.Utils.FormatType.None, "", true, DevExpress.Utils.HorzAlignment.Near) }; lookUpItem.ShowHeader = false; } lookUpItem.AutoHeight = true; lookUpItem.NullText = ""; lookUpItem.PopupSizeable = true; lookUpItem.ShowLines = true; lookUpItem.ShowPopupShadow = true; lookUpItem.Columns.AddRange(lookUpCols); lookUpItem.ValueMember = editInfo.ValueFieldName; lookUpItem.DisplayMember = editInfo.TextFieldName; //lookUpItem.ReadOnly = true; // lookUpItem.DropDownRows = 12; lookUpItem.PopupWidth = 100; //第二个判断是为了支持向下兼容的API,因为以前的API中是不会穿入colDataType的,在向下兼容的接口中传入默认值 //XtraGridEditHelper.COL_UNKNOW_DATE_TYPE_FOR_CREATING,在这种情况下,不支持空值 if (editInfo.InsertNullItem && string.Compare(colDataType, XtraGridEditHelper.COL_UNKNOW_DATE_TYPE_FOR_CREATING) != 0) { DataRow emptyRow = newData.NewRow(); if (colDataType.IndexOf('?') >= 0) { emptyRow[editInfo.ValueFieldName] = null; } if (string.Compare(colDataType, "System.String", true) == 0) { emptyRow[editInfo.ValueFieldName] = string.Empty; } else if (string.Compare(colDataType, "System.Int32", true) == 0 || string.Compare(colDataType, "System.Decimal", true) == 0) { emptyRow[editInfo.ValueFieldName] = 0; } newData.Rows.InsertAt(emptyRow, 0); lookUpItem.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; } else { lookUpItem.AllowNullInput = DevExpress.Utils.DefaultBoolean.False; } lookUpItem.DataSource = newData.DefaultView; }