>>生如夏花<<

该写些什么了......

发布支持flash的 AdRotator C#版控件源码

 1using System;
 2using System.Web.UI;
 3using System.Web.UI.WebControls;
 4using System.ComponentModel;
 5using System.Text;
 6namespace FlashAdRotator
 7{
 8    /// <summary>
 9    /// fpAdRotator 的摘要说明。
10    /// </summary>

11    [DefaultProperty("Text"), 
12        ToolboxData("<{0}:fpAdRotator runat=server></{0}:fpAdRotator>")]
13    public class fpAdRotator : System.Web.UI.WebControls.AdRotator
14    {
15        private bool isflashad;
16        private string imgurl;
17        [Bindable(true), 
18            Category("Appearance"), 
19            DefaultValue("")] 
20        /// <summary> 
21        /// 将此控件呈现给指定的输出参数。
22        /// </summary>
23        /// <param name="output"> 要写出到的 HTML 编写器 </param>

24        protected override void Render(HtmlTextWriter output)
25        {
26            try
27            {
28                if(isflashad==true)
29                {
30                    StringBuilder sb=new StringBuilder("<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"");
31                    sb.Append("codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0\" width={0} height={1}>");
32                    sb.Append("<param name=\"movie\" value={2} />");
33                    sb.Append("<param name=\"quality\" value=\"high\"/>");
34                    sb.Append("<embed src={3} quality=\"high\"");
35                    sb.Append("pluginspage=\"http://www.macromedia.com/go/getflashplayer\" type=\"application/x-shockwave-flash\" width={4} height={5}></embed></object>");
36                    StringBuilder outstr=new StringBuilder();
37                    outstr.AppendFormat(sb.ToString(),this.Width,this.Height,this.imgurl,this.imgurl,this.Width,this.Height);
38                    output.Write(outstr);
39                }

40                if(isflashad==false)
41                {
42                    //this.Render(output);
43                    base.Render (output);
44                }

45            }

46            catch
47            {
48                StringBuilder sb=new StringBuilder("<table><tr>广告媒体不存在<td></td></tr><table>");
49                output.Write(sb);
50            }

51        }

52        protected override void OnAdCreated(AdCreatedEventArgs e)
53        {
54            if(e.ImageUrl.ToLower().IndexOf(".swf")!=-1)
55            {
56                this.isflashad=true;
57                this.imgurl=e.ImageUrl;
58            }

59            else
60            {
61                this.isflashad=false;
62            }

63        }

64    }

65}

66
vs自带的AdRotator 不支持flash显示,而我又要用到这个功能,在网上搜罗了一阵,找到一个老外写的vb版本的,地址为:http://www.dnzone.com/ShowDetail.asp?NewsId=901。但我的项目都是用C#做的,索性自己改成C#的,思路是按照老外的走的,很简单的东西,这也是我第一个控件,谈不上原创,但是C#版的这个网上我还是没有找到。呵呵。编译环境 vs2003+window server 2003 。源码我已经测试通过。
  关于怎么使用的问题我就不说了,希望大家多多探讨!

posted on 2007-06-18 10:32 wilensky 阅读(863) 评论(3)  编辑 收藏 所属分类: C#学习随笔个人原创

评论

#1楼  2007-06-18 11:30 高海东      

有demo更好啊 可以提供demo吗   回复  引用  查看    

#2楼 [楼主] 2007-06-18 11:52 Wilensky      

@高海东
demo可以自己参考msdn上面的 用法,用xml作为数据源   回复  引用  查看    

#3楼  2007-09-21 07:54 lameihua [未注册用户]

高度和宽度好像不好传递   回复  引用    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-06-18 11:53 编辑过