近期做一小的项目,遇到一个难题。因为有些数据是不确定的,有可能有,有可能无。
如下入所示:
我便把这些内容全写入一个字段里,构建方式如下:
00002001|美学|艺术类|1.5
00004003|消费心理学|心理类|1
00005001|民法学|法律类|1.5
而每一小项我用“|”来区隔,每一行数据我用“$”来分隔。即:
00002001|美学|艺术类|1.5 $ 00004003|消费心理学|心理类|1 $ 00005001|民法学|法律类|1.5
如何把这些信息绑定到Reperter控件上呢?
翻阅网上的一些资料,我的方案如下:采用了 DataTable 和 DataRow 来实现。
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>自定义数据绑定</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table width="400" border="0" cellspacing="2" cellpadding="0">
<tr bgcolor="#EEEEEE">
<td width="25%" ><B>课程代码</B></td>
<td width="25%" ><B>课程名称</B></td>
<td width="25%" ><B>课程类别</B></td>
<td width="25%" ><B>课程学分</B></td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr bgcolor="#EEFEFE">
<td><%# Eval("kcdm") %></td>
<td><%# Eval("kcmc") %></td>
<td><%# Eval("kclb") %></td>
<td><%# Eval("kcxf") %></td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr bgcolor="#FFEEEE">
<td><%# Eval("kcdm") %></td>
<td><%# Eval("kcmc") %></td>
<td><%# Eval("kclb") %></td>
<td><%# Eval("kcxf") %></td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string aa = "00002001|美学|艺术类|1.5 $ 00004003|消费心理学|心理类|1 $ 00005001|民法学|法律类|1.5".Trim();
DataTable dt = new DataTable();
dt.Columns.Add("kcdm", typeof(System.String)); //课程代码
dt.Columns.Add("kcmc", typeof(System.String)); //课程名称
dt.Columns.Add("kclb", typeof(System.String)); //课程类别
dt.Columns.Add("kcxf", typeof(System.String)); //课程学分
DataRow dr;
string[] bb = aa.Split('$');
foreach (string cc in bb)
{
if (cc.Trim() != "")
{
string[] dd = cc.Split('|');
dr = dt.NewRow();
dr["kcdm"]= dd[0];
dr["kcmc"]= dd[1];
dr["kclb"]= dd[2];
dr["kcxf"]= dd[3];
dt.Rows.Add(dr);
}
}
Repeater1.DataSource=dt;
Repeater1.DataBind();
dr = null;
dt = null;
}
}
测试成功。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=1250169