我如何对齐我的列
private void AlignGridColumns()
{
GridView[] gridViews = { gvDailySales, gvDetail, gvItemDetail };
foreach (var gridView in gridViews)
{
if (gridView != null && gridView.GridControl.DataSource is DataTable dt)
{
foreach (GridColumn column in gridView.Columns)
{
if (dt.Columns.Contains(column.FieldName))
{
AlignColumns(column, dt.Columns[column.FieldName].DataType);
}
}
}
}
}
private void AlignColumns(GridColumn column, Type columnType)
{
if (columnType == typeof(decimal) || columnType == typeof(double) || columnType == typeof(float) || columnType == typeof(long) || columnType == typeof(int)
&& column.FieldName != "Void" && column.FieldName != "Refund")
{
column.AppearanceCell.Options.UseTextOptions = true;
column.AppearanceCell.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
column.DisplayFormat.FormatType = DevExpress.Utils.FormatType.Numeric;
column.DisplayFormat.FormatString = "N2";
}
}
通过删除IF条件AlignColumns
,所有其他列将与右对齐,只有从
CalculateMasterFields
中分配的值将左对齐。
我还检查了我要编辑的列的数据表,它的确是小数或int格式的,而不是字符串(字符串将自动从Devexpress community中看到的左向左对准)。
下面是我启动和创建网格列的方式:
我如何创建我的网格列private void btnSearch_Click(object sender, EventArgs e)
{
myMasterTable = myListing.CalculateMasterFields(mySalesListingTable, myFileFormat);
myDetailTable = myListing.CalculateDetailFields(mySalesListingDetailTable, myFileFormat);
// Create DataRelation for Master-Detail1 if detail table has rows
if (mySalesListingDetailTable.Rows.Count > 0)
{
DataSet dataSet = new DataSet();
dataSet.Tables.Add(myMasterTable);
dataSet.Tables.Add(myDetailTable);
dataSet.Relations.Add("MasterDetailRelation1",
myMasterTable.Columns["DocNo"],
myDetailTable.Columns["DocNo"]);
gridControl1.DataSource = dataSet.Tables[0];
gridControl1.LevelTree.Nodes.Add("MasterDetailRelation1", gvDetail);
AlignGridColumns();
gvDailySales.OptionsDetail.ShowDetailTabs = false;
}
else
{
gridControl1.DataSource = myMasterTable;
AlignGridColumns();
}
}
private void CreateGridColumn(string caption, string fieldName, bool isVisible, bool isMaster)
{
GridColumn gridColumn = new GridColumn();
gridColumn.FieldName = fieldName;
gridColumn.Caption = caption;
gridColumn.AppearanceCell.Font = new System.Drawing.Font("Tahoma", 9.75F);
gridColumn.AppearanceCell.Options.UseFont = true;
gridColumn.AppearanceHeader.Font = new System.Drawing.Font("Tahoma", 9.75F, System.Drawing.FontStyle.Bold);
gridColumn.AppearanceHeader.Options.UseFont = true;
gridColumn.OptionsColumn.AllowEdit = false;
gridColumn.Visible = isVisible;
if (isMaster)
{
if (gvDailySales.Columns.ColumnByName(fieldName) == null)
gvDailySales.Columns.Add(gridColumn);
}
else
{
if (gvDetail.Columns.ColumnByName(fieldName) == null)
gvDetail.Columns.Add(gridColumn);
}
}
private void CreateMasterTableColumns(string myFileFormat)
{
CreateMasterColumns(CreateGridColumn);
CreateDetailColumns(CreateGridColumn);
}
使用
AlignGridColumns
和
AlignColumns
列对齐的逻辑正在干扰我的InitializeFormControl
的工作,该工作用来定义字段的数据类型,以使其在GridView中对齐。
InitializeFormControl()
private void InitializeFormControl()
{
FormControlUtil f = new FormControlUtil(myDBSetting);
// Currency fields
f.AddField("TotalExTax", FormControlUtil.CURRENCY_FIELD);
f.AddField("ServiceCharge", FormControlUtil.CURRENCY_FIELD);
f.InitControls(this);
}
AlignGridColumns
和
AlignColumns
解决了问题。对我的高年级的信念。