我正在创建一个报表查看器,我事先不知道报表的查询内容是什么(它是使用单独的报表生成器创建的)。我正在使用一组Telerik
控件来显示"报告运行时的输出" (即执行查询并返回System.Data.DataTable
)。对于原始数据,我使用DataGrid
这很好,因为它自动生成列,一切正常,但我也试图生成一个垂直布局更具视觉吸引力/可读性的版本。我从看到here的示例开始,但问题在于示例中显示的对象是事先知道的,它们使用#Eval("")
中的ItemTemplate
语句。在我的情况下,我不知道列名是什么,所以有没有办法在运行时{需要Eval
或其他东西)动态重命名datasource
中的列引用?或者有更好的方法来完成我想要做的事情吗?
答案 0 :(得分:0)
我已经使用了Telerik和RadGrid控件一段时间了。虽然我从来没有做过这样的事情,但你应该能够调用一个方法,在列内容的服务器标签中返回一个字符串而不是Eval。
所以而不是
<telerik:GridTemplateColumn>
<%# Eval("MyColumnName") %>
</telerik:GridTemplateColumn>
类似
<telerik:GridTemplateColumn>
<%# GetColumn1Data() %>
</telerik:GridTemplateColumn>
public string GetColumn1Data()
{
return DataSet.Column1.ToString(); //pseudo code
}
您应该能够通过索引引用您的数据集,如果数据不存在且不需要它们,可以制作一大堆模板列并动态隐藏它们
答案 1 :(得分:0)
您可以使用ItemDataBound事件访问模板列(http://www.telerik.com/help/aspnet-ajax/grid-accessing-cells-and-rows.html)并将所需的任何数据放入其中,例如,在LiteralControl中。通过此事件,您可以访问与该行关联的数据项,以便您可以提取所有内容。