2012-10-11 4 views
0
나는 소스가 생성 될 때 RadGridView에 대한 데이터 소스를 동적으로 사용자의 입력/선택에 매번를 기반으로 생성됩니다

RadGridView을 기입 동적

윈폼 2011 Q3위한 RadControls을 사용하고

, 나는 SetDatasource2KeyValuesGrid() 를 호출합니다 내가 예상 열은 생성 된 열과 gridview에 채워진 값입니다. 그러나 내가 볼 수있는 열이 생성 된 있지만 gridview 행 수를 해당 데이터 원본 (keyValuesList) 항목 수를 일치하는 경우에도 값이 채워진 뭔가 간단하게 놓친합니다. 도와주세요. 덕분에

편집 : 목록에서 KeyTable을 만들고 DataSource에 할당하면 작동합니다. 감사

private void CreateTableSetDatasource(List<FeedKeyValueOneSet>) keyValueList) 
{ 
    if(keyValueList==null) return; 

    var table = new DataTable(); 
    table.Columns.Add("Check"); 
    foreach (var feedKeyValueOneSet in keyValueList) 
    { 
     var oneset = feedKeyValueOneSet.KeyValueOneSet;    
     foreach (var oneKey in oneset) 
     { 
      table.Columns.Add(oneKey.key); 
     } 
     break; 
    } 

    foreach (var feedKeyValueOneSet in keyValueList) 
    { 
     var oneset = feedKeyValueOneSet.KeyValueOneSet; 
     var numOfCol = oneset.Length + 1; 
     var obj = new object[numOfCol]; 
     obj[0] = "false"; 
     int idx = 1; 
     foreach (var oneKey in oneset) 
     { 
      obj[idx] = oneKey.value; 
      idx++; 
     } 
     table.Rows.Add(obj); 
    } 
    radGridKeyValues.DataSource = table; 
} 


private void SetDatasource2KeyValuesGrid() 
{ 
    if (radGridKeyValues.Columns != null) radGridKeyValues.Columns.Clear(); 
    radGridKeyValues.AutoGenerateColumns = false; 
    radGridKeyValues.EnableFiltering = false; 
    radGridKeyValues.ShowFilteringRow = false; 
    radGridKeyValues.ShowHeaderCellButtons = false; 
    radGridKeyValues.AllowDragToGroup = false; 
    radGridKeyValues.AllowAddNewRow = false; 
    radGridKeyValues.EnableGrouping = false; 

    var keyValueList = (List<FeedKeyValueOneSet>)TimeSeries.FeedValuesCache[m_strFeedName + "_KEYVALUES"]; 
    if(keyValueList==null) return; 

    GridViewDataColumn checkBoxColumn = new GridViewCheckBoxColumn("columnState", "columnState"); 
    checkBoxColumn.HeaderText = string.Empty; 
    if (radGridKeyValues.Columns != null) radGridKeyValues.Columns.Add(checkBoxColumn); 

    foreach (var feedKeyValueOneSet in keyValueList) 
    { 
     var oneset = feedKeyValueOneSet.KeyValueOneSet; 
     foreach (var oneKey in oneset) 
     { 
      var textboxCol = new GridViewTextBoxColumn(oneKey.key, oneKey.key); 
      textboxCol.Width = 150; 
      textboxCol.ReadOnly = true; 
      if (radGridKeyValues.Columns != null) radGridKeyValues.Columns.Add(textboxCol); 
     } 
     break; 
    } 

    radGridKeyValues.DataSource = keyValueList; 
} 

public class FeedKeyValueOneSet 
{ 
    public FeedFieldValues[] KeyValueOneSet; 
} 

public class FeedFieldValues 
{ 
    public string key { get; set; } 
    public string value { get; set; } 
} 

답변

0

나는 목록 keyValueList에서의 DataTable을 만든 다음 데이터 소스에 할당, 그것은 질문

에 편집 코드를 참조 작동