说我有一个像Dictionary<string, Dictionary<string, int>>
或类似的数据结构,我想把它作为一个HTML表格作为第一个字符串键和作为第二个字符串键的列标题。有没有内置或其他控制这个?将元组呈现给ASP.NET 2.0中的表的简单方法?
回答
没有内置控件可以识别这样的复杂数据结构。你需要为它做一些自定义编码。
你可以用一个带有ItemDataBound事件处理程序的Repeater轻松实现它。只是把我的头,没有测试的顶部:
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound=" Repeater1_OnItemDataBound">
<ItemTemplate>
<asp:Literal ID="Literal1" runat="server" />
</ItemTemplate>
</asp:Repeater>
protected void Repeater1_OnItemDataBound(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType ==
ListItemType.AlternatingItem)
{
var rowHeader= (e.Item.DataItem).Key;
var columnHeaders = (e.Item.DataItem).Value;
foreach (var header in columnHeaders)
{
// build string to populate table row, assign to Literal1
}
}
}
是否有一个控件可以识别持有这种数据类型的另一种类型的数据结构?像上面提到的SQL结果(row,col,value)? – nicolaskruchten 2010-06-08 18:34:39
不是我所知道的。您可以使用gridview识别DataRow风格的数据,因此如果您可以将元组放入DataTable中,则可以轻松地绑定到表并将HeaderTemplate处理您的头,并且行头可以位于第一列中。但是,就我所知,没有即时可用的电子表格样式控件来解析数据。 – womp 2010-06-08 18:43:34
您可以使用嵌套数据绑定控件并跳过OnItemDataBoundStep,只需绑定被绑定外项目的属性的内部控制。
因此,对于您的情况,您的字典中的每个项目都包含一个密钥和另一个字典。因此,每次绑定时,都可以访问该项目的字典,以将其设置为内部数据绑定控件的数据源。
请看下面的例子:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections.Generic" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
Dictionary<string, Dictionary<string, int>> TestDict = new Dictionary<string, Dictionary<string, int>>();
//This is just loading the test dictionary
for (int i = 0; i < 10; i++)
{
Dictionary<string, int> ColData = new Dictionary<string, int>();
TestDict.Add("Row Header " + i, ColData);
for (int j = 0; j < 5; j++)
{
ColData.Add("Col Header " + j, i + j);
}
}
//Bind the Outer Repeater
RepeaterRow.DataSource = TestDict;
RepeaterRow.DataBind();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form id="form1" runat="server">
<asp:Repeater ID="RepeaterRow" runat="server">
<HeaderTemplate>
<table>
</HeaderTemplate>
<ItemTemplate>
<tr>
<th>
<%# Eval("Key") %>
</th>
<asp:Repeater ID="RepeaterColumn" DataSource='<%# Eval("Value")%>' runat="server">
<ItemTemplate>
<td>
<%# Eval("Value") %>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
- 1. 将ASP.NET MVC 3 ViewModels呈现为Rails视图中的ListView,Accordian或简单列表
- 2. 无法呈现简单的ReactDOM div
- 3. Express.js呈现简单的html
- 4. ASP.NET(MVC) - 将页面呈现给文件
- 5. 呈现表单后呈现函数后面的代码ASP.NET
- 6. 简单Vue组件不呈现
- 7. 用于呈现简单HTML片段的方法
- 8. 将关联数组传递给方法的简明方法
- 9. 在ASP.NET MVC中实现分页的简单方法是什么?
- 10. 将呈现的图像呈现给Rails中的浏览器
- 11. 将EJB 2.0项目转换为EJB 3.0的最简单方法
- 12. 如何将参数传递给呈现的h:outputText方法?
- 13. 如何将URL参数传递给呈现的symfony3表单?
- 14. 简单的方法
- 15. 有没有简单的方法来使用webservice方法在SSRS 2008中异步呈现报表?
- 16. 将Rails表单转换为AJAX表单的简单方法?
- 17. 简单的方法将html表格导出为ASP.NET中的excel文件?
- 18. 在ASP.NET MVC中实现工作单元的方法
- 19. 将自定义指令的属性传递给子元素的简单方法?
- 20. 如何控制Zend Form中的单个表单元素呈现?
- 21. GMAIL未能在电子邮件中呈现简单的表格
- 22. 将单选按钮绑定到SQL表中的简单方法#
- 23. 呈现简单的聊天布局
- 24. 呈现最简单的成分反应
- 25. JSF 2.0 outputText呈现?
- 26. 将URL传递给具有UIWebView的UIViewController的最简单方法
- 27. Ajax方法呈现多个元素
- 28. 呈现一个条件表单元素
- 29. 呈现zend表单元素在
- 30. 居中表和其他元素的最简单方法?
或者,我可以得到从数据库中的数据,如“行,列,值”的格式如果让事情更容易... – nicolaskruchten 2010-06-08 18:24:01
我最终建立一个简单的控件有一个'setData(row,col,value)'方法并呈现给HTML表格。 – nicolaskruchten 2010-06-10 18:09:17