0

WinForms 2011 Q3 に RadControls を使用しています

RadGridView のデータソースは、ユーザーの入力/選択に基づいて動的に生成されます。データソースが生成されるたびに、SetDatasource2KeyValuesGrid() を呼び出します。列が生成され、値がグリッドビューに入力されることを期待しています。ただし、列が生成されていますが、グリッドビューの行数がデータソース (keyValuesList) の項目数と一致しているにもかかわらず、値が入力されていません。助けてください。ありがとう

編集: リスト keyValueList から DataTable を作成し、それを 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; }
}
4

1 に答える 1

0

リストkeyValueListからDataTableを作成し、それをDataSourceに割り当てると、質問の編集中のコードが機能します

于 2012-10-15T15:31:53.803 に答える