나는 다음과 같습니다 개체가 :사용자 정의 그리드 모양 설정을 사용하여 UltraWinGrid로 계층 적 데이터를 표시 하시겠습니까?
public class ComponentProperty
{
public string Property { get; set; }
public object Value { get; set; }
public string DataType { get; set; }
public string PropertyKey { get; set; }
public string Unit { get; set; }
public string DependencyType { get; set; }
public object ListType { get; set; }
public List<ComponentProperty> Properties { get; set; }
}
내가 출력이는 바인딩의 다음과 같은 형태로 동안 빌드 정보를 가지고 :
public class ComponentPropertyList: BindingList<ComponentProperty>
{
}
시나리오 : 구성 요소의
목록 Properties Infragistics Ultra WinGrid에 바인딩하여 Master- Detail View를 생성하고 Grid에서 다음 사용자 정의를 수행했습니다. 설정 :
void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
{
ultraGrid1.DisplayLayout.Override.AllowColSizing = AllowColSizing.Synchronized;
e.Layout.Bands[0].Override.HeaderAppearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True;
ultraGrid1.DisplayLayout.Appearance.BackColor = Color.White;
ultraGrid1.DisplayLayout.Appearance.BackColor2 = Color.White;
ultraGrid1.DisplayLayout.Override.ActiveRowAppearance = null;
ultraGrid1.DisplayLayout.BorderStyle = UIElementBorderStyle.None;
ultraGrid1.DisplayLayout.Override.BorderStyleCell = UIElementBorderStyle.None;
ultraGrid1.DisplayLayout.Override.BorderStyleRow = UIElementBorderStyle.None;
ultraGrid1.DisplayLayout.Override.ColumnAutoSizeMode = ColumnAutoSizeMode.Default;
ultraGrid1.DisplayLayout.Bands[0].ColHeadersVisible = true;
ultraGrid1.DisplayLayout.Bands[0].Override.RowSelectors = DefaultableBoolean.False;
ultraGrid1.DisplayLayout.Bands[0].Columns[0].CellActivation = Activation.NoEdit;
ultraGrid1.DisplayLayout.Bands[0].Columns[1].CellActivation = Activation.AllowEdit;
//Infosys: Nikita - Added for #1143 - START
ultraGrid1.DisplayLayout.Bands[0].Columns["Unit"].CellActivation = Activation.NoEdit;
//Infosys: Nikita - Added for #1143 - END
ultraGrid1.DisplayLayout.Bands[0].Columns[1].CellAppearance.BorderColor = Color.Black;
ultraGrid1.DisplayLayout.Override.RowAppearance.TextVAlign = VAlign.Middle;
// e.Layout.Bands[0].Columns[1].Width = 90;
ultraGrid1.DisplayLayout.Scrollbars = Scrollbars.Automatic;
ultraGrid1.DisplayLayout.ScrollBounds = ScrollBounds.ScrollToFill;
ultraGrid1.DisplayLayout.AutoFitStyle = AutoFitStyle.ResizeAllColumns;
ultraGrid1.DisplayLayout.Bands[0].Columns[2].AutoSizeMode = ColumnAutoSizeMode.None;
ultraGrid1.DisplayLayout.Bands[0].Columns[3].AutoSizeMode = ColumnAutoSizeMode.None;
ultraGrid1.DisplayLayout.Bands[0].Columns[2].Hidden = true;
ultraGrid1.DisplayLayout.Bands[0].Columns[3].Hidden = true;
//ultraGrid1.DisplayLayout.Bands[0].Columns[Constants.Collevel].Hidden = true;
//ultraGrid1.DisplayLayout.Bands[0].Columns[Constants.ColID].Hidden = true;
//ultraGrid1.DisplayLayout.Bands[0].Columns[Constants.Colparentid].Hidden = true;
ultraGrid1.DisplayLayout.Bands[0].Columns["DependencyType"].Hidden = true;
ultraGrid1.DisplayLayout.Bands[0].Columns["ListType"].Hidden = true;
//ultraGrid1.DisplayLayout.Bands[0].Override.AllowColSizing = AllowColSizing.Synchronized;
ultraGrid1.DisplayLayout.BorderStyle = UIElementBorderStyle.Default;
//ultraGrid1.DisplayLayout.Bands[0].Columns[1].TabStop = false;
ultraGrid1.DisplayLayout.Bands[0].Columns[1].CellAppearance.BackColor = Color.White;
ultraGrid1.DisplayLayout.Bands[0].Columns["Value"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
ultraGrid1.DisplayLayout.Bands[0].Columns["Value"].ButtonDisplayStyle = Infragistics.Win.UltraWinGrid.ButtonDisplayStyle.Always;
ultraGrid1.DisplayLayout.Bands[0].Columns["Value"].CellAppearance.BackColor = Color.White;
ultraGrid1.DisplayLayout.Override.SupportDataErrorInfo = SupportDataErrorInfo.CellsOnly;
ultraGrid1.DisplayLayout.Bands[0].Columns[1].SupportDataErrorInfo = DefaultableBoolean.True;
ultraGrid1.DisplayLayout.Bands[0].Columns[0].Width = 200;
ultraGrid1.DisplayLayout.Bands[0].Columns["Value"].Width = 120;
ultraGrid1.DisplayLayout.Bands[0].Columns["Value"].TabIndex = 0;
ultraGrid1.DisplayLayout.Bands[0].Columns["Unit"].Width = 60;
for (int rowCount = 0; rowCount < ultraGrid1.Rows.Count; rowCount++)
{
UltraGridRow row = ultraGrid1.Rows[rowCount];
if (string.IsNullOrEmpty(Convert.ToString(row.Cells[1].Value)))
{
row.Cells[1].Appearance.BackColor = Color.White;
}
}
ultraGrid1.DisplayLayout.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;
ultraGrid1.DisplayLayout.Override.BorderStyleCell = Infragistics.Win.UIElementBorderStyle.Solid;
ultraGrid1.DisplayLayout.Override.GroupByRowSpacingAfter = 0;
ultraGrid1.DisplayLayout.Override.GroupByRowSpacingBefore = 0;
ultraGrid1.DisplayLayout.Override.HeaderPlacement = HeaderPlacement.OncePerGroupedRowIsland;
if (ultraGrid1.DisplayLayout.Bands.Count > 1)
{
ultraGrid1.DisplayLayout.Bands[1].ColHeadersVisible = false;
ultraGrid1.DisplayLayout.Bands[1].Columns[2].AutoSizeMode = ColumnAutoSizeMode.None;
ultraGrid1.DisplayLayout.Bands[1].Columns[3].AutoSizeMode = ColumnAutoSizeMode.None;
ultraGrid1.DisplayLayout.Bands[1].Columns[0].CellActivation = Activation.NoEdit;
ultraGrid1.DisplayLayout.Bands[1].Columns[4].CellActivation = Activation.NoEdit;
ultraGrid1.DisplayLayout.Bands[1].Columns[2].Hidden = true;
ultraGrid1.DisplayLayout.Bands[1].Columns[3].Hidden = true;
ultraGrid1.DisplayLayout.Bands[1].Columns["DependencyType"].Hidden = true;
ultraGrid1.DisplayLayout.Bands[1].Columns["ListType"].Hidden = true;
ultraGrid1.DisplayLayout.Bands[1].Columns[0].Width = 120;
//ultraGrid1.DisplayLayout.Bands[1].Columns[0].TabStop = false;
ultraGrid1.DisplayLayout.Bands[1].Columns["Value"].Width = 180;
ultraGrid1.DisplayLayout.Bands[1].Columns["Value"].TabIndex = 0;
ultraGrid1.DisplayLayout.Bands[1].Columns["Unit"].Width = 60;
//ultraGrid1.DisplayLayout.Bands[1].Columns[Constants.ColUnit].TabStop = false;
ultraGrid1.DisplayLayout.Override.RowSelectors = DefaultableBoolean.False;
if (e.Layout.Bands[1].Columns.Exists(" ") == true)
{
ultraGrid1.DisplayLayout.Bands[1].Columns[" "].Width = 0;
}
if (e.Layout.Bands[1].Columns.Exists(" ") == false)
{
ultraGrid1.DisplayLayout.Bands[1].Columns.Add(" ");
ultraGrid1.DisplayLayout.Bands[1].Columns[" "].Header.VisiblePosition = 0;
ultraGrid1.DisplayLayout.Bands[1].Columns[" "].Width = 0;
}
if (ultraGrid1.DisplayLayout.Bands.Count > 2)
{
ultraGrid1.DisplayLayout.Bands[2].ColHeadersVisible = false;
ultraGrid1.DisplayLayout.Bands[2].Columns[2].AutoSizeMode = ColumnAutoSizeMode.None;
ultraGrid1.DisplayLayout.Bands[2].Columns[3].AutoSizeMode = ColumnAutoSizeMode.None;
ultraGrid1.DisplayLayout.Bands[2].Columns[0].CellActivation = Activation.NoEdit;
ultraGrid1.DisplayLayout.Bands[2].Columns[4].CellActivation = Activation.NoEdit;
//ultraGrid1.DisplayLayout.Bands[2].Override.AllowColSizing = AllowColSizing.None;
ultraGrid1.DisplayLayout.Bands[2].Columns[2].Hidden = true;
ultraGrid1.DisplayLayout.Bands[2].Columns[3].Hidden = true;
ultraGrid1.DisplayLayout.Bands[2].Columns["DependencyType"].Hidden = true;
ultraGrid1.DisplayLayout.Bands[2].Columns["ListType"].Hidden = true;
ultraGrid1.DisplayLayout.Bands[2].Columns[0].Width = 200;
ultraGrid1.DisplayLayout.Bands[2].Columns["Value"].Width = 120;
ultraGrid1.DisplayLayout.Bands[2].Columns["Unit"].Width = 60;
ultraGrid1.DisplayLayout.Override.RowSelectors = DefaultableBoolean.False;
//ultraGrid1.DisplayLayout.Bands[2].Columns[0].TabStop = false;
ultraGrid1.DisplayLayout.Bands[2].Columns["Value"].TabIndex = 0;
//ultraGrid1.DisplayLayout.Bands[2].Columns[Constants.ColUnit].TabStop = false;
ultraGrid1.DisplayLayout.Bands[2].Columns["Value"].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList;
ultraGrid1.DisplayLayout.Bands[2].Columns["Value"].ButtonDisplayStyle = Infragistics.Win.UltraWinGrid.ButtonDisplayStyle.
if (e.Layout.Bands[2].Columns.Exists(" ") == true)
{
ultraGrid1.DisplayLayout.Bands[2].Columns[" "].Width = 0;
}
if (e.Layout.Bands[2].Columns.Exists(" ") == false)
{
ultraGrid1.DisplayLayout.Bands[2].Columns.Add(" ");
ultraGrid1.DisplayLayout.Bands[2].Columns[" "].Header.VisiblePosition = 0;
ultraGrid1.DisplayLayout.Bands[2].Columns[" "].Width = 0;
}
}
}
e.Layout.Bands[0].Override.CellAppearance.BorderAlpha = Alpha.Transparent;
e.Layout.Bands[0].Override.SelectedCellAppearance.ForeColor = Color.Black;
e.Layout.Bands[0].Override.RowAppearance.BorderAlpha = Alpha.Transparent;
e.Layout.Bands[0].Override.CellAppearance.BackColorAlpha = Alpha.Transparent;
e.Layout.Bands[0].Columns[0].CellActivation = Activation.NoEdit;
e.Layout.Bands[0].Columns[1].CellActivation = Activation.NoEdit;
e.Layout.Bands[0].Columns[2].CellActivation = Activation.NoEdit;
ultraGrid1.DisplayLayout.AutoFitStyle = AutoFitStyle.ResizeAllColumns;
ultraGrid1.DisplayLayout.Bands[0].Override.RowSelectors = DefaultableBoolean.False;
ultraGrid1.DisplayLayout.Appearance.BackColor = Color.White;
//ultraGrid1.DisplayLayout.Override.AllowColSizing = AllowColSizing.None;
//ultraGrid1.DisplayLayout.Override.AllowRowLayoutColMoving = GridBagLayoutAllowMoving.None;
ultraGrid1.DisplayLayout.BorderStyle = UIElementBorderStyle.Solid;
ultraGrid1.DisplayLayout.Bands[0].Columns[1].ButtonDisplayStyle = Infragistics.Win.UltraWinGrid.ButtonDisplayStyle.Always;
ultraGrid1.DisplayLayout.TabNavigation = TabNavigation.NextCell;
if (e.Layout.Bands[0].Columns.Exists(" ") == true)
{
ultraGrid1.DisplayLayout.Bands[0].Columns[" "].Width = 0;
//ultraGrid1.DisplayLayout.Bands[0].Columns[" "].ColSpan = 3;
}
if (e.Layout.Bands[0].Columns.Exists(" ") == false)
{
ultraGrid1.DisplayLayout.Bands[0].Columns.Add(" ").DataType = typeof(bool);
ultraGrid1.DisplayLayout.Bands[0].Columns[" "].Header.VisiblePosition = 0;
ultraGrid1.DisplayLayout.Bands[0].Columns[" "].Width = 0;
// ultraGrid1.DisplayLayout.Bands[0].Columns[" "].ColSpan = 3;
ultraGrid1.DisplayLayout.Bands[0].Columns[" "].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.CheckBox;
UltraGridColumn checkBox = ultraGrid1.DisplayLayout.Bands[0].Columns[" "];
}
foreach (UltraGridBand band in ultraGrid1.DisplayLayout.Bands)
{
band.HeaderVisible = false;
}
}
componentProperties 컬렉션은 값에 따라 N 레벨을 가질 수 있습니다.
CompoentProperty 1
--------> SubProperty1
----------------> SubSubProperty1
---------- ------> SubSubProperty1
CompoentProperty 2
--------> SubProperty2
----------------> SubSubProperty2
---- ------------> SubSubProperty2
----------------------> SubSubProperty3
-------- --------------> SubSubProperty3
,--------------------------->SubSubProperty NN
문제점 :
레이아웃이 정확하지 격자에 DataSource
을 할당 한 후 ComponentProperties
클래스 및 지정 Column Size
으로 많은 밴딩이 발생해도 아무런 효과가 없습니다. 이전에는 객체 데이터 소스로 대체해야하는 datasource로 datatable을 사용하고있었습니다. 객체 데이터 소스로 작업해야하는 설정이 있습니까?
당신이 계신 분명하지 않다. ComponentProperty를 첫 번째 밴드 ('마스터')로, 평평한 계층을 두 번째 밴드로 사용 하시겠습니까? 아니면 레벨을 유지 하시겠습니까? – kristianp