1

这是我第一次来这里,请放轻松。

我是using C#/ASP.NET开发网站的 Web Formss approch。下面的代码正在填充 a gridView,因此,我想使用相同的返回来填充DataTable,也许使用Repeater.

声明代表

public delegate object ListMethod
public ListMethod listMethod;

定义列表方法

(Page.Master as Gestao).listMethod = listaTodos;

listaTodos 方法

return usrMethods.Listar().ToList(); // Which returns a List<T>

填充 GridView

if (!listMethod.Equals(null))
{
    this.ListagemView.DataSource = listMethod();
    this.ListagemView.DataBind();
}

好吧,如果你们需要更多信息,请告诉我。

大多数使用Repeater&的示例dataTables需要在 中Columns手动定义<HeaderTemplate>,然后<tr><ItemTemplate>. 就我而言,问题是我不知道列表中列的数量,也不知道它们的名称。

谢谢你的建议,真的很抱歉英语不好。

4

1 回答 1

1

DataTables需要适当的表格布局。如果您使用的是 ASP.NET Gridviews,它不会在thead带有元素的标签中呈现表头th......它使用 CSS 样式的行tbody来看起来像表头。DataTables 不知道该怎么做。

有一种解决方法。创建此方法:

void gridview_DataBound(object sender, EventArgs e) {
  var gv = (GridView)sender;
  if (gv.HeaderRow != null) {
    gv.HeaderRow.TableSection = TableRowSection.TableHeader;
  }
}

然后在您的代码块中:

if (!listMethod.Equals(null))
{
  this.ListagemView.DataBound += gridview_DataBound; // <--- ADD THIS LINE
  this.ListagemView.DataSource = listMethod();
  this.ListagemView.DataBind();
}

然后在你的 JavaScript 中你应该可以调用:

$('#<%= this.ListagemView.ClientID %>').dataTable();

不需要明确定义任何列,因为 DataTables 将自动检测thead现在正在正确生成的列。

于 2013-08-28T13:17:53.057 回答