1

DataTable を Json 形式で取得してグラフに表示したいと考えています。

public JsonResult GetDataTable()
{
    DataTable dt = new DataTable();

    dt.Columns.Add("Jan");
    dt.Columns.Add("Feb");
    dt.Columns.Add("Mar");
    dt.Columns.Add("Apr");

    for (int i = 0; i < 10; i++)
    {
        dt.Rows.Add(i * 5, i * 10, i * 15, i * 11);
    }

    // JsonDataTable = dt to Json

    return new JsonResult
    {
        Data = new
        {
            success = true,
                chartData = JsonDataTable 
        },
        JsonRequestBehavior = JsonRequestBehavior.AllowGet
    };
}

DataTable を Json に変換するにはどうすればよいですか?

ありがとう。

4

3 に答える 3

0

次のようなことを試してみませんか。

public static class JSONEncoderHelper
{
    public static string FromXML(DataTable table)
    {
        StringBuilder sbuilder = new StringBuilder();

        sbuilder.Append("{\"");
        sbuilder.Append(table.TableName);
        sbuilder.Append("\":[");

        bool first = true;
        foreach (DataRow drow in table.Rows)
        {
            if (first)
            {
                sbuilder.Append("{");
                first = false;
            }
            else
                sbuilder.Append(",{");

            bool firstColumn = true;
            foreach (DataColumn column in table.Columns)
            {
                if (firstColumn)
                {
                    sbuilder.Append(string.Format("\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString()));
                    firstColumn = false;
                }
                else
                sbuilder.Append(string.Format(",\"{0}\":\"{1}\"", column.ColumnName, drow[column].ToString()));
            }
            sbuilder.Append("}");
        }

        sbuilder.Append("]}");

        return sbuilder.ToString();
    }
}

あとは、2 分で作成したヘルパー クラスをリファクタリングするだけです

:)

于 2013-09-05T00:50:15.213 に答える
0

データ テーブルにメソッドを適用し、AsEnumerableそれに LINQ を適用して、必要な形式で取得します。

var thatList=(from p in dt.AsEnumerable() 
                 select new { 
                               Jan= p.Field<string>("Jan"),
                               Feb = p.Field<string>("Feb"),
                               Mar = p.Field<string>("Mar"),
                               Apr = p.Field<string>("Apr")
                            }).ToList();

thatListこれで、Json に変換するために使用できます。

return Json(new { status = true, chartData = thatList }, 
                                    JsonRequestBehavior.AllowGet);
于 2012-11-10T22:50:57.090 に答える