最近想把一个数组做为数据源绑定到Repeater上。网上搜了一下,有人说数组没有实现IEnumerable接口,无法绑定。查了一下MSDN,发现Array类是所有数组的基类,并且实现了这个接口:public abstract class Array : ICloneable, IList, ICollection, IEnumerable,既然是这样,那肯定是可以绑定的了。于是写了段测试代码
<%@ Page Language="C#" %>
<%@ Register Src="~/Controls/ArticlePoint.ascx" TagName="Point" TagPrefix="uc" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!Page.IsPostBack)
{
string[,] array = { { "1", "2" }, { "3", "4" }, { "5", "6" } };
repeater.DataSource = array;
repeater.DataBind();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>二维数组绑定</title>
<link href="css/xqm.css" rel="stylesheet" type="text/css" />
<link href="css/rete.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="repeater" runat="server">
<ItemTemplate>
|<%# Container.DataItem.GetType() %>|
</ItemTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
页面执行结果如下:|System.String|
|System.String|
|System.String|
|System.String|
|System.String|
|System.String|
从这个结果来看,绑定的时候,应该是将二维数组也当成一维数组来处理了。
个人看法,欢迎大家拍砖!