今天想做个repeater用xml做数据源的东西,上网查了下资料还真是少,于是就自己动起手来,其实是很简单那。

关键就是明白数据控件中Container.DataItem的含义和用法即可。先贴上代码。

xml:

<?xml version="1.0" encoding="UTF-8"?>
<ThreadList Count="476" fid="103">

<Thread tid="396133" uid="279005" subject="含义和用法即"></Thread>

<Thread tid="396132" uid="279005" subject="字母诠释下的夏奈尔></Thread>

<ThreadList>

aspx.cs代码:

 

XmlDocument doc = new XmlDocument();

doc.LoadXml("xml");

this.repTopicList.DataSource = xmldoc.DocumentElement.ChildNodes;
this.repTopicList.DataBind();

前台绑定:

引入命名空间<%@ Import Namespace="System.Xml" %>
<asp:Repeater ID="repTopicList" runat="server">
            <ItemTemplate>
               <span><%# ((XmlNode)Container.DataItem).Attributes["subject"].Value%><span><br />
            </ItemTemplate></asp:Repeater> 

就这么简单,解释下,Container.DataItem取到是什么东西呢?

跟你绑定的数据源有关,如果是datatable那就是datarow,list数组的话就是key,value对,这里是xmlnodelist,所以要先转为xmlnode,后面我想大家都会了吧,

是取属性的值还是节点值都比较简单了,还可以使用xpath用于查询比较复杂的节点。

另:这种用法看论坛上有人说速度比较的慢

posted @ 2009-01-13 11:46 且歌且行 阅读(1302) 评论(4) 编辑
HTTP404对SEO的影响

  自定义404错误页面是提供用户体验的很好的做法,但在应用过程中往往并未注意到对搜索引擎的影响,譬如:错误的服务器端配置导致返回“200”状态码或自定义404错误页面使用Meta Refresh导致返回“302”状态码。正确设置的自定义404错误页面,不仅应当能够正确地显示,同时,应该返回“404”错误代码,而不是“200”或“302”。虽然对访问的用户而言,HTTP状态码究竟是“404”还是“200”来说并没有什么区别,但对搜索引擎而言,这则是相当重要的。

使用web.config中的customErrors来做的话并不好,因为asp.net会在返回的head头上加上302状态,即使你在自定义的404页面上设置Response.StatusCode = 404也是无法消除asp.net加的302错误。因此我的办法就是在全局错误处理Application_Error中设置并返回html代码。

这是我的代码:

Code

 

为什么要加那么多的“页面没有找到”呢?是因为ie有个BUG:如果404页面大小不够521b的话会被ie的默认内容替换。

另个需要注意的是meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />这个必须在title标签前,否则ie6下不能跳转。

这是我在做自定义404错误页面的心得,各位达人还有什么更好的办法。

 

posted @ 2008-12-25 11:24 且歌且行 阅读(3328) 评论(5) 编辑
   这是利用google的开放的接口做的一个搜索功能,虽然http://code.google.com/apis/ajaxsearch/samples.html上有很多例子,但都会显示出google的标志,就不能随心所欲的嵌入自己网站,我这个例子里不会有其他的标志,你还可以修改代码添加你想要的功能和效果。
   如果要运行这个代码你需要先到http://code.google.com/apis/ajaxsearch/signup.html申请一个key替换代码"key=你在GOOGLE上申请到的KEY"中的key后的参数,就可运行了。

<!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>
    <title>无标题页</title>
</head>
<body>
    <div>

        <script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=你在GOOGLE上申请到的KEY"
            type="text/javascript"></script>

        <script type="text/javascript">
function OnSearchLoad(searchStr)
{
  // Create a search control
    var searchControl = new GSearchControl();
    var options = new GsearcherOptions();
    options.setExpandMode(GSearchControl.EXPAND_MODE_OPEN);
    var WebSearch = new GnewsSearch();
    searchControl.addSearcher(WebSearch,options);
    WebSearch.setSearchCompleteCallback(this,GetResult,[WebSearch]);
    //searchControl.addSearcher(new GblogSearch(),options);      这是blog搜索
    //searchControl.addSearcher(new GnewsSearch(),options);     这是资讯搜索  还有其他好多类,可以查看google的api
    searchControl.setResultSetSize(GSearch.LARGE_RESULTSET);    //显示多少个,只能是4个和8个。。。。。。。

    searchControl.draw(document.getElementById("searchcontrol"));
    searchControl.execute(searchStr);
  }
    //GSearch.setOnLoadCallback(OnLoad);
function Search()
{
    OnSearchLoad(document.all.searchKey.value);
}

function GetResult(searcher)
{
    //返回结果,可以个性化的设置
    var strContent = "";
    if( searcher.results && searcher.results.length>0)
    {
    for(var i=0;i<searcher.results.length;i++)
    {
        var result = searcher.results[i];
        strContent += "<br />"+result.title+"<br />来自:"+result.publisher+"&nbsp;<a href='"+result.unescapedUrl+"'>"+result.unescapedUrl+"</a><br />" +result.content+"<br />——"+result.publishedDate +"<br />";
       
    }
    }
    document.all.Div1.innerHTML = strContent;
}
        </script>

        关键词:
        <input type="text" id="searchKey" />&nbsp;<span onclick="Search()">搜索</span>
        <div id="searchcontrol" style="display: none;">
        </div>
        <div id="Div1">
        </div>
    </div>
</body>
</html>

posted @ 2007-12-06 17:43 且歌且行 阅读(634) 评论(2) 编辑