2

リストの配列を作成しました。配列には曜日を表す7つの行があり、リストには医師の予約に使用できるスロットが含まれています。私はそれをaGridViewまたはa DataList(より適切なもの)でバインドしようとしていますが、成功しません。

私はリストを宣言しました:

List<string>[] list=new List<string>[7]; //An array of 7 lists
                    for (int i = 0; i < 7; i++)
                    {
                        list[i]=new List<string>();
                    }

医師との面会に利用できるスロットを表す文字列をリストに入力しました。

私が達成したい結果は、このサイトに示されているように、医師の1人が利用できることです。リンク

4

3 に答える 3

1

どうもありがとうございます。それは本当に役に立ちました。私はこの変換の背後にあるロジックを理解しようと時間を費やしました。初心者として、私は小さな釣り人のコードになってしまいます。

 private System.Data.DataTable CreateDataTable(List<string> columnDefinitions, List<List<string>> rows)
    {
        DataTable table = new DataTable();

        foreach (string colDef in columnDefinitions)
        {
            DataColumn column;
            column = new DataColumn();
            column.DataType = typeof(string);
            column.ColumnName = colDef;
            table.Columns.Add(column);
        }

        for (int i = 0; i < rows[0].Count; i++)
        {
            table.Rows.Add(rows[0][i], rows[1][i], rows[2][i], rows[3][i], rows[4][i], rows[5][i], rows[6][i]);
        }
        return table;
    }

    private List<string> GetColDefsFromBackend()
    {
        List<string> cols = new List<string>();
        cols.Add("Monday");
        cols.Add("Tuesday");
        cols.Add("Wednesday");
        cols.Add("Thursday");
        cols.Add("Friday");
        cols.Add("Saturday");
        cols.Add("Sunday");
        return cols;
    }
于 2012-10-23T23:18:45.513 に答える
1

配列を次のList<List<string>>ように変更できます。

List<List<string>> list = new List<List<string>>();

次に、次の方法でそれをにバインドできGridViewます(ケースに適応するだけです)。

protected void Page_Load(object sender, EventArgs e)
{
    List<string> cols = GetColDefsFromBackend();
    List<List<string>> rows = GetDataFromBackend();


    GridView1.DataSource = CreateDataTable(cols, rows);
    GridView1.DataBind();
}


private System.Data.DataTable CreateDataTable(List<string> columnDefinitions, List<List<string>> rows)
{
    DataTable table = new DataTable();
    foreach (string colDef in columnDefinitions)
    {
        DataColumn column;
        column = new DataColumn();
        column.DataType = typeof(string);
        column.ColumnName = colDef;
        table.Columns.Add(column);
    }


    // Create DataRow and Add it to table
    foreach (List<string> rowData in rows)
    {
        DataRow row = table.NewRow();
        // rowData is in same order as columnDefinitions
        for (int i = 0; i < rowData.Count; i++)
        {
            row[i] = rowData[i];
        }
        table.Rows.Add(row);
    }


    return table;
}


/// <summary>
/// Simulates a StoredProcedureCall which returns
/// the data in a List with Lists of strings
/// </summary>
private List<List<string>> GetDataFromBackend()
{
    List<List<string>> myData = new List<List<string>>();
    myData.Add(Row(1));
    myData.Add(Row(2));
    myData.Add(Row(3));
    return myData;
}


private List<string> Row(int p)
{
    List<string> row = new List<string>();
    for (int i = 0; i < 4; i++)
    {
        row.Add(string.Format("Column {0}/{1}", p, i));
    }
    return row;
}     

private List<string> GetColDefsFromBackend()
{
    List<string> cols = new List<string>();
    cols.Add("Col1");
    cols.Add("Col2");
    cols.Add("Col3");
    cols.Add("Col4");
    return cols;
}

ソース:GridViewとして使用-データソースList<List<string>>

于 2012-10-20T15:43:35.180 に答える
0

リストをデータテーブルに変換してからバインドします。配列の配列は、明確にバインドするために少し複雑です。

于 2012-10-20T16:39:58.447 に答える