using System;
using System.Data;
using System.Configuration;
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;
using System.Xml;
using System.IO;
public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {    }
    protected void Button1_Click(object sender, EventArgs e)
    {   string str = "<a><col1>1</col1><col2>2</col2><col3>3</col3></a>";
        Response.Write(str.ToString());
        DataTable dt = new DataTable();
        dt = this.CXmlToDatatTable(str, 0);
        this.Repeater1.DataSource = dt.DefaultView;
        this.Repeater1.DataBind();
    }
    public DataSet CXmlToDataSet(string xmlStr)
    {
        if (!string.IsNullOrEmpty(xmlStr))
        {
            StringReader StrStream = null;
            XmlTextReader Xmlrdr = null;
            try
            {
                DataSet ds = new DataSet();
                //读取字符串中的信息
                StrStream = new StringReader(xmlStr);
                //获取StrStream中的数据
                Xmlrdr = new XmlTextReader(StrStream);
                //ds获取Xmlrdr中的数据                
                ds.ReadXml(Xmlrdr);
                return ds;
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                //释放资源
                if (Xmlrdr != null)
                {
                    Xmlrdr.Close();
                    StrStream.Close();
                    StrStream.Dispose();
                }
            }
        }
        else
        {
            return null;
        }
    }
    public DataTable CXmlToDatatTable(string xmlStr, int tableIndex)
    {
        return CXmlToDataSet(xmlStr).Tables[tableIndex];
    }}这样直接绑定到repeater不能显示数据,是为什么?

解决方案 »

  1.   

    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">
            </asp:Repeater>
            &nbsp; &nbsp;
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
        </form>
    </body>
    </html>
      

  2.   

    用gridview试试,Repeater不会自动绑定,要你自己添加绑定列
      

  3.   

    谢谢BearRui
    DataList好像也不行吧?
      

  4.   

    gridview可以了.呵呵
    我记得用2003做winform时,可以这样绑定datalist的呀?
    为什么2005里作为web控件却不行了?
      

  5.   

    Repeater是很灵活的,不像gridview那样会自己生成html代码,所以用Repeater必须每个列自己来声明才能绑定,你这里没声明,所以绑定不了。gridview默认是会自动产生datatable中的所有列,并进行绑定。
    当然gridview也支持自己声明列来绑定
      

  6.   

    repeater要手动在HTML页添加绑定语句