博客 (42)

我们在用数据控件的时候,一般会在 .aspx 页面生成如单向绑定

Text='<%# Eval("title") %>'

 

或双向绑定

Text='<%# Bind("title") %>'

 

之类的绑定代码,如果我们必需对它进行进一步处理,譬如取得的“产品分类的ID”,我想显示为“产品分类的名称”,或者格式化时间显示

等等。

如果只是连接字符串可以这样处理

Text='<%# Eval("title", "标题为:{0}") %>'

 

如果是通过一个方法去改变绑定值,则可以:

Text='<%# Server.HtmlEncode(Eval("title","{0}")) %>'

 

这里可以套用任何自定义的方法。更可以实现绑定两个数据库字段的实现:

Text='<%# formatUrl(Eval("ID","{0}"),Eval("xArchive","{0}")) %>'
public string formatUrl(string id, string archive)
{

if (archive.Trim() != "")
{

return "/xsdn/archive/" + archive + ".aspx";
}

else
{
return "/xsdn/"+id+".aspx";
}
}

 

 

xoyozo 17 年前
4,734
通常,XML文件不能直接和数据绑定控件进行绑定,可以利用DataSet的ReadXml()方法,将XML架构和数据读取到DataSet中,然后将DataSet作为数据源进行绑定。
下面代码是一个XML文件绑定的示例。
aspx文件

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    void Page_Load(object sender, System.EventArgs e)
    {
        //创建Dataset对象
        DataSet myDS = new DataSet();
        //将 XML 文件读入 Dataset
        myDS.ReadXml(Server.MapPath("people.xml"));
        //显示 Dataset 中表的名称
        Label1.Text = "表的名称是:" + myDS.Tables[0].TableName;
        //绑定到 DataGrid
        DataGrid1.DataSource = myDS.Tables[0];
        DataGrid1.DataBind();
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>将 XML 文件作为数据源绑定到控件</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <h3>将 XML 文件作为数据源绑定到控件</h3>
    <asp:Label ID="Label1" runat="server">Label</asp:Label><br />
    <asp:DataGrid ID="DataGrid1" runat="server"></asp:DataGrid>
    </div>
    </form>
</body>
</html>

people.xml文件<?xml version="1.0" encoding="utf-8" ?>
<People>
  <Persion>
    <Name>张三</Name>
    <Phone>433333333</Phone>
    <Address>北京</Address>
  </Persion>
  <Persion>
    <Name>李四</Name>
    <Phone>55555555555</Phone>
    <Address>杭州</Address>
  </Persion>
  <Persion>
    <Name>王五</Name>
    <Phone>666666</Phone>
    <Address>工工工</Address>
  </Persion>
</People>
5,237