一個簡單asp.net下Web RSS控件

 

一個簡單asp.net下Web RSS控件,支持數據綁定列設置,綁定到DataTable數據源。  設計模式中輸出位html的幫助信息。正式用的時候。WebRss.OutRss();  輸出標準XML格式的RSS文檔

namespace WebControls
{



    
public class WebRSS : WebControl
    
{
        
private object m_DataSource;

        
public WebRSS()
        
{
            m_ItemDescriptionField 
= "Description";
            m_ItemLinkField 
= "Link";
            m_ItemPubDateField 
= "PubDate";
            m_ItemTitleField 
= "Title";
            
            
this.Init += new EventHandler(WebRSS_Init);
        }


        
void WebRSS_Init(object sender, EventArgs e)
        
{
            
        }



        
private string m_Title, m_Link, m_Description, m_Language, m_ItemTitleField, m_ItemDescriptionField, m_ItemPubDateField, m_ItemLinkField;


        [Category(
"RSS基本屬性")]
        [Description(
"RSS頻道名稱")]
        
public string Title
        
{
            
getreturn m_Title;}
            
set { m_Title = value; }
        }


        [Category(
"RSS基本屬性")]
        [Description(
"RSS頻道連接地址")]
        
public string Link
        
{
            
get return m_Link; }
            
set { m_Link = value; }
        }


        [Category(
"RSS基本屬性")]
        [Description(
"RSS頻道說明")]
        
public string Description
        
{
            
get return m_Description; }
            
set { m_Description = value; }
        }


        [Category(
"RSS基本屬性")]
        [Description(
"RSS頻道語言")]
        
public string Language
        
{
            
get return m_Language; }
            
set { m_Language = value; }
        }


        [Category(
"RSS項綁定屬性")]
        [Description(
"RSS項標題列名")]
        
public string ItemTitleField
        
{
            
get return m_ItemTitleField; }
            
set { m_ItemTitleField = value; }
        }


        [Category(
"RSS項綁定屬性")]
        [Description(
"RSS項描述列名")]
        
public string ItemDescriptionField
        
{
            
get return m_ItemDescriptionField; }
            
set { m_ItemDescriptionField = value; }
        }


        [Category(
"RSS項綁定屬性")]
        [Description(
"RSS項發佈時間列名")]
        
public string ItemPubDateField
        
{
            
get return m_ItemPubDateField; }
            
set { m_ItemPubDateField = value; }
        }


        [Category(
"RSS項綁定屬性")]
        [Description(
"RSS項連接地址列名")]
        
public string ItemLinkField
        
{
            
get return m_ItemLinkField; }
            
set { m_ItemLinkField = value; }
        }


        


        [Category(
"RSS項綁定屬性")]
        [Description(
"RSS項數據源")]
        
public object DataSource
        
{
            
get return m_DataSource; }
            
set { m_DataSource = value; }
        }


        
        
private void DataBindItem()
        
{
            
/**/
           
string templet = @"<asp:Repeater id=""myRepeater"" runat=""server"">
<ItemTemplate><item>
<title><%#DataBinder.Eval(Container.DataItem,""
"+m_ItemTitleField+@"""%></title>
<description><![CDATA[<%#DataBinder.Eval(Container.DataItem,""
" + m_ItemDescriptionField + @"""%>]]></description>
<pubDate><%#DataBinder.Eval(Container.DataItem,""
" + m_ItemPubDateField + @"""%></pubDate>
<link><%#DataBinder.Eval(Container.DataItem, ""
" + m_ItemLinkField + @""" %></link>
</item>
</ItemTemplate>
</asp:Repeater>
";
            

            Repeater r 
= new Repeater();
            
this.Controls.Add(r);
            

        }



        
/// <summary>
        
/// 輸出RSS聚合內容
        
/// </summary>

        public void OutRss()
        
{
            StringBuilder rss 
= new StringBuilder();
            rss.AppendLine(
"<rss version="2.0">");
            rss.AppendLine(
"<channel>");
            rss.AppendLine(
"<title>"+m_Title +"</title>");
            rss.AppendLine(
"<link>" + m_Link + "</link>");
            rss.AppendLine(
"<description>" + m_Description + "</description>");
            rss.AppendLine(
"<language>zh-cn</language>");
            rss.AppendLine(
"<pubdate>" + DateTime.Now.ToString() + "</pubdate>");

            System.Collections.IEnumerable ie 
= m_DataSource as System.Collections.IEnumerable;
            
if (ie != null)
            
{
                System.Collections.IEnumerator ie2 
= ie.GetEnumerator();
                DataRowView dr;
                
while (ie2.MoveNext())
                
{
                    dr 
= ie2.Current as DataRowView;
                    rss.AppendLine(
@"<item>
<title>
" + Common.ToString(dr[m_ItemTitleField]) + @"</title>
<description><![CDATA[
" + Common.ToString(dr[m_ItemDescriptionField]) + @"]]></description>
<pubDate>
" + Common.ToString(dr[m_ItemPubDateField]) + @"</pubDate>
<link>
" + Common.ToString(dr[m_ItemLinkField]) + @"</link>
</item>
");

                }

            }


            rss.AppendLine(
"</channel>");
            rss.AppendLine(
"</rss>");
            
if (Page.Response != null)
            
{
                Page.Response.Clear();
                Page.Response.Expires 
= 0;
                Page.Response.ContentType 
= "text/xml";
                Page.Response.ContentEncoding 
= Encoding.UTF8;
                Page.Response.Write(rss.ToString());
                Page.Response.End();
            }


        }




        
protected override string TagName
        
{
            
get
            
{
                
return "channel";
            }

        }




        
protected override void RenderContents(HtmlTextWriter writer)
        
{
            DataBindItem();

            
if (DesignMode)
            
{
                writer.WriteLine(
"標題:" + m_Title); writer.WriteBreak();
                writer.WriteLine(
"連接:" + m_Link); writer.WriteBreak();
                writer.WriteLine(
"描述:" + m_Description); writer.WriteBreak();
                writer.WriteLine(
"語言:" + m_Language); writer.WriteBreak();
                
for (int i = 0; i < 3; i++)
                
{
                    writer.WriteBreak();
                    writer.WriteLine(
"RSS項標題:綁定列(" + m_ItemTitleField + ")"); writer.WriteBreak();
                    writer.WriteLine(
"RSS項連接:綁定列(" + m_ItemLinkField + ")"); writer.WriteBreak();
                    writer.WriteLine(
"RSS項說明:綁定列(" + m_ItemDescriptionField + ")"); writer.WriteBreak();
                    writer.WriteLine(
"RSS項時間:綁定列(" + m_ItemPubDateField + ")"); writer.WriteBreak();
                }

            }

            
else
            
{
                writer.WriteLine(
"應該輸出爲XML格式。"); writer.WriteBreak();
            }

            
base.RenderContents(writer);
        }


        


    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章