⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 webserviceboxlist.cs

📁 一个ASP.NET下的中文内容管理和社区系统
💻 CS
字号:
namespace ASPNET.StarterKit.Communities {

    using System;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using ASPNET.StarterKit.Communities.Services;
    using System.Web.Security;
    using System.Collections;


    //*********************************************************************
    //
    // WebServiceBoxList Class
    //
    // This control displays a list of Web service boxes enabled
    // for a particular section.
    //
    //*********************************************************************
        
    public class WebServiceBoxList : SkinnedCommunityControl {
    
        string _skinFileName = "Services_WebServiceBoxList.ascx";

        Repeater rptBoxes;


        //*********************************************************************
        //
        // WebServiceBoxList Constructor
        //
        // Calls the base SkinnedCommunityControl constructor
        // and assigns the default page skin.
        //
        //*********************************************************************

		public WebServiceBoxList() : base() {
            // Assign a default skin file name
            if (SkinFileName == null)
                SkinFileName = _skinFileName;
        }
        


        //*********************************************************************
        //
        // SkinType Property
        //
        // Specifies the skins directory where this page's skin file is located.
        //
        //*********************************************************************
        
        override protected string SkinType {
            get { return "ControlSkins"; }
        }


   
        //*********************************************************************
        //
        // InitializeSkin Method
        //
        // Retrieves all the controls from the page skin.
        //
        //*********************************************************************

        override protected void InitializeSkin(Control skin) {
            // Find Web Service Boxes repeater
            rptBoxes = (Repeater)GetControl(skin, "rptWebServiceBoxes");
            rptBoxes.ItemDataBound += new RepeaterItemEventHandler(Boxes_ItemDataBound);
        } 


   
        //*********************************************************************
        //
        // OnLoad Method
        //
        // Iterates through all the services and attempts
        // to get a response. If the service is dead, the service
        // is skipped.
        //
        //*********************************************************************

        override protected void OnLoad(EventArgs e) {
            ArrayList colWebServiceBoxes;
            ArrayList colServiceResponses = new ArrayList();
            ServiceResponseInfo responseInfo;
            
            if (objSectionInfo.WebServiceBoxes.Length > 0) {
                colWebServiceBoxes = CalculateWebServiceBoxes(objSectionInfo.WebServiceBoxes);
                foreach (string box in colWebServiceBoxes) {
                    try {
                        responseInfo = ServiceUtility.GetServiceResponseInfo(box);
                    } catch (Exception ex) {
                        ActivityUtility.RecordError("Service call failed: " + box, ex);
                        responseInfo = null;
                    }
                    if (responseInfo != null)
                        colServiceResponses.Add(responseInfo);
                }
                
                EnsureChildControls();
                rptBoxes.DataSource = colServiceResponses;
                rptBoxes.DataBind();
            }            
        }


   
        //*********************************************************************
        //
        // Boxes_ItemDataBound Method
        //
        // Binds each Web service box to the top-level rptBoxes
        // Repeater control. We are using nested Repeaters here. One
        // Repeater lists the Web Service Boxes, the nested Repeater
        // displays Web Service Box items.
        //
        //*********************************************************************
       
        
        void Boxes_ItemDataBound(Object s, RepeaterItemEventArgs e) {
            // Don't do any binding in header or footer
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
                Repeater rptBox;
                HyperLink lnkServiceTitle;
                Label lblServiceDescription;
                Label lblServiceCopyright;
                Label lblDateLastRefreshed;
                HyperLink lnkServiceImage;
                
                // Get the service response 
                ServiceResponseInfo responseInfo = (ServiceResponseInfo)e.Item.DataItem;

                    
                // Find Service Title Link
                lnkServiceTitle = (HyperLink)GetControl(e.Item, "lnkServiceTitle");
                lnkServiceTitle.Text = responseInfo.ServiceTitle;
                lnkServiceTitle.NavigateUrl = responseInfo.ServiceLink;
                
                // Find Service Description
                lblServiceDescription = (Label)GetControl(e.Item, "lblServiceDescription");
                lblServiceDescription.Text = responseInfo.ServiceDescription;
                
                // Find Service Copyright
                lblServiceCopyright = (Label)GetControl(e.Item, "lblServiceCopyright");
                lblServiceCopyright.Text = responseInfo.ServiceCopyright;
                
                // Find Date Last Refreshed Label
                lblDateLastRefreshed = (Label)GetControl(e.Item, "lblDateLastRefreshed");
                lblDateLastRefreshed.Text = String.Format("{0} {1}", lblDateLastRefreshed.Text, responseInfo.DateLastRefreshed);
                
                // Find the Service Image
                lnkServiceImage = (HyperLink)GetControl(e.Item, "lnkServiceImage");
                if (responseInfo.ServiceImageUrl != String.Empty) {
                    lnkServiceImage.ImageUrl = responseInfo.ServiceImageUrl;
                    lnkServiceImage.NavigateUrl = responseInfo.ServiceImageLink;
                    lnkServiceImage.ToolTip = responseInfo.ServiceImageTitle;
                }
                
                // Find Web Service Box repeater
                rptBox = (Repeater)GetControl(e.Item, "rptWebServiceBox");
                rptBox.ItemDataBound += new RepeaterItemEventHandler(Box_ItemDataBound);
                rptBox.DataSource = responseInfo.Items;
                rptBox.DataBind();
            }
        }
        

   
        //*********************************************************************
        //
        // Box_ItemDataBound Method
        //
        // Displays each service response item in the nested Repeater.
        //
        //*********************************************************************
        
        void Box_ItemDataBound(Object s, RepeaterItemEventArgs e) {
            // Don't do any binding in header or footer
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
                HyperLink lnkItemTitle;
                Label lblItemDescription;               
                
                // Get the Response Info Item from Data Item
                ServiceResponseInfoItem responseInfoItem = (ServiceResponseInfoItem)e.Item.DataItem;
                
                // Find the Title link
                lnkItemTitle = (HyperLink)GetControl(e.Item, "lnkItemTitle");
                lnkItemTitle.Text = responseInfoItem.Title;
                lnkItemTitle.NavigateUrl = responseInfoItem.Link;
                
                // Find Description
                lblItemDescription = (Label)GetControl(e.Item, "lblItemDescription");
                lblItemDescription.Text = Context.Server.HtmlDecode(responseInfoItem.Description);
             

            }
        }        
 
    
        //*********************************************************************
        //
        // CalculateWebServiceBoxes Method
        //
        // Determines which Web service boxes are displayed based on
        // the section WebServiceBoxDisplayMode property.
        //
        //*********************************************************************

 
        private ArrayList CalculateWebServiceBoxes(string[] webServiceBoxes) {
            int intItem = 0;
            ArrayList colArrayList = new ArrayList(webServiceBoxes);

            
            // show all
            if (objSectionInfo.WebServiceBoxDisplayMode == 0)
                return colArrayList;
            
            // Calculate number of boxes to display
            int displayCount = Math.Min(objSectionInfo.WebServiceBoxDisplayMode, colArrayList.Count);
            
            // Get correct number of WebBoxes
            Random objRan = new Random();
            ArrayList colNewArrayList = new ArrayList();
            for (int i=0;i<displayCount;i++) {
                intItem = objRan.Next(colArrayList.Count);    
                colNewArrayList.Add(colArrayList[intItem]);
                colArrayList.RemoveAt(intItem);
            }     
        
            return colNewArrayList;
        }


    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -