как привязать данные к веб-сетке с помощью MVC?

Это мой первый пост. Помоги мне. как привязать данные к веб-сетке? Мой код:

SqlConnection con = new SqlConnection(CS);
SqlCommand cmd = new SqlCommand("select * from candidate", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
return View(dt);

Я хочу привязать данные к webgrid ... помогите мне ...


person Jebas    schedule 28.08.2013    source источник
comment
Это не то, как работает MVC, и это отход от того, как работают WebForms - пожалуйста, просмотрите несколько руководств по использованию .NET MVC - asp.net/mvc/tutorials   -  person Tommy    schedule 28.08.2013
comment
Да, ознакомьтесь с LINQ и EntityFramework, поскольку это ORM, используемые с MVC.   -  person user1477388    schedule 28.08.2013
comment
пожалуйста, дайте мне любую ссылку на учебник ...   -  person Jebas    schedule 29.08.2013


Ответы (2)


Это лучшее решение, которое я нашел :) Надеюсь, оно вам поможет:

SqlConnection con = new SqlConnection(CS);
SqlCommand cmd = new SqlCommand("select * from candidate", con);

DataTable dt = new DataTable();
SqlDataAdapter a = new SqlDataAdapter(cmd)
a.Fill(dt);

var result = new List<dynamic>();
foreach (DataRow row in dt.Rows)
{
    var obj = (IDictionary<string, object>)new ExpandoObject();
    foreach (DataColumn col in dt.Columns)
    {
        obj.Add(col.ColumnName, row[col.ColumnName]);
    }
    result.Add(obj);
}

WebGrid grid = new WebGrid(Model, canPage: true, rowsPerPage: 15);

Тогда в виду вы можете использовать:

@grid.GetHtml(htmlAttributes: new { id = "empTable" },
            tableStyle: "table table-striped table-hover",
            headerStyle: "header",
            alternatingRowStyle: "alt",
            selectedRowStyle: "select",
            columns: grid.Columns(
                grid.Column("col1name", "Column title"),
                grid.Column("col2name", "Column2 title")
     ))

где сетка - ваша переменная WebGrid grid.

person mrfazolka    schedule 05.03.2015

Мне пришлось использовать DataTable, поскольку данные поступали из стороннего кода через DataTable. У меня возникли проблемы с тем, чтобы WebGrid обнаруживал / отражал столбцы, которые были добавлены в DataTable. Преобразование в динамический список в соответствии с ответом mrfazolka сработало. В итоге я превратил его в статический метод:

   public static List<dynamic> DataTable2List(DataTable dt)
   {
      var list = new List<dynamic>();
      foreach (DataRow row in dt.Rows)
      {
         var obj = (IDictionary<string, object>) new ExpandoObject();
         foreach (DataColumn col in dt.Columns)
         {
            obj.Add(col.ColumnName, row[col.ColumnName]);
         }
         list.Add(obj);
      }
      return list;
   }
person Matthew Lock    schedule 27.03.2017