• Calendar webPart的源代码 (原创)


    using System;
    using System.ComponentModel;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Xml.Serialization;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Utilities;
    using Microsoft.SharePoint.WebPartPages;
    using Microsoft.SharePoint.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Drawing;
    using Microsoft.VisualBasic;
    using System.Xml;
    using SPDB.Business;
    using System.Globalization;
    using System.Threading;


    namespace WebPartLibrary1
    {
     /// <summary>
     /// Description for WebPart1.
     /// </summary>
     [DefaultProperty("Text"),ToolboxData("<{0}:WebPart1 runat=server></{0}:WebPart1>"),XmlRoot(Namespace="WebPartLibrary1")]

     public class WebPart1 : Microsoft.SharePoint.WebPartPages.WebPart
     {

            private System.Web.UI.WebControls.Calendar _calendar;
      private System.Web.UI.WebControls.Image _imageTop;
      private System.Web.UI.WebControls.Image _imageTitle;
      private System.Web.UI.WebControls.Image _imageDownBlack;
      private System.Web.UI.WebControls.Image _imageMore;
      
      private System.Threading.Thread thread;
      private CultureInfo oldCulture;

      #region property

      private const string defaultListName = "事件";
      private const string defaultDetailUrl = "";
      private string _eventListName = defaultListName;
      private string _eventDetailUrl = defaultDetailUrl;

      [Browsable(true),
      Category("定制"),
      DefaultValue(defaultListName),
      WebPartStorage(Storage.Shared),
      FriendlyName("事件列表标题"),
      Description("事件列表标题.")]
      public string EventListName
      {
       get
       {
        return _eventListName;
       }

       set
       {
        _eventListName = value;
       }
      }
      
      [Browsable(true),
      Category("定制"),
      DefaultValue(defaultDetailUrl),
      WebPartStorage(Storage.Shared),
      FriendlyName("网站地址"),
      Description("网站地址.")]
      public string EventDetailUrl
      {
       get
       {
        return _eventDetailUrl;
       }

       set
       {
        _eventDetailUrl = value;

        if (!_eventDetailUrl.EndsWith("/"))
         _eventDetailUrl += "/";
       }
      }

      private const bool defaultNewWindow = true;
      private bool _NewWindow = defaultNewWindow;

      [Browsable(true),
      Category("定制"),
      DefaultValue(defaultNewWindow),
      WebPartStorage(Storage.Shared),
      FriendlyName("是否打开新窗口"),
      Description("超链接是否打开新窗口")]
      public bool NewWindow
      {
       get
       {
        return _NewWindow;
       }
      
       set
       {
        _NewWindow = value;
       }
      }


      private const string defaultStyleServer = "" ;
      private string _StyleServer=defaultStyleServer;

      [Browsable(true),
      Category("定制"),
      DefaultValue(defaultStyleServer),
      WebPartStorage(Storage.Shared),
      FriendlyName("标题风格URL"),
      Description("标题风格所在网站的URL")]
      public string StyleServer
      {
       get
       {
        return _StyleServer;
       }
      
       set
       {
        _StyleServer = value;

        if (_StyleServer!="" && _StyleServer.IndexOf("/",7)>0)
         _StyleServer = _StyleServer.Substring(0,_StyleServer.IndexOf("/",7));
       }
      }

      private const string defaultStyleName = "" ;
      private string _StyleName=defaultStyleName;

      [Browsable(true),
      Category("定制"),
      DefaultValue(defaultStyleName),
      WebPartStorage(Storage.Shared),
      FriendlyName("标题风格名"),
      Description("标题风格名")]
      public string StyleName
      {
       get
       {
        return _StyleName;
       }
      
       set
       {
        _StyleName = value;
       }
      }

      #endregion

      #region ToolPart

      /// <summary>
      /// This method gets the custom tool parts for this Web Part by overriding the
      /// GetToolParts method of the WebPart base class. You must implement
      /// custom tool parts in a separate class that derives from
      /// Microsoft.SharePoint.WebPartPages.ToolPart.
      /// </summary>
      ///<returns>An array of references to ToolPart objects.</returns>
      public override ToolPart[] GetToolParts()
      {
       ToolPart[] toolparts = new ToolPart[2];
       CustomPropertyToolPart custom = new CustomPropertyToolPart();
       WebPartToolPart wptp = new WebPartToolPart();
       custom.Expand("定制");
       toolparts[0] = custom;
       toolparts[1] = wptp;
       return toolparts;
      }
      
      #endregion

      #region CreateChildControls

      /// <summary>
      /// Add calendar to this webpart.
      /// </summary>
      protected override void CreateChildControls()
      {
                #region Style

       //Top
       _imageTop = new System.Web.UI.WebControls.Image();
       _imageTop.ImageUrl = "E:/SPS/WebPartLibrary1/img/top.gif";
       _imageTop.Width = 300;

       #region meno

       //DownBlack
       _imageDownBlack = new System.Web.UI.WebControls.Image();
       _imageDownBlack.ImageUrl = "E:/SPS/WebPartLibrary1/img/downblack.bmp";
       _imageDownBlack.Height = 30;
       _imageDownBlack.Width = 230;

       //Top
       _imageMore = new System.Web.UI.WebControls.Image();
       _imageMore.ImageUrl = "E:/SPS/WebPartLibrary1/img/more.gif";
       _imageMore.Height = 30;
       _imageMore.Width = 70;
       #endregion

       //Title    "~/img/calender.gif"    "../img/calender.gif"
       _imageTitle = new System.Web.UI.WebControls.Image();
       _imageTitle.ImageUrl = "E:/SPS/WebPartLibrary1/img/calender.gif";
       _imageTitle.Height= 40;
       _imageTitle.Width = 300;
               
       //Calendar
       _calendar = new System.Web.UI.WebControls.Calendar();

       _calendar.Width = 300;
       _calendar.Height = 200;
       _calendar.BorderWidth = 0;

       _calendar.SelectedDate = System.DateTime.Today;
       
       //星期的显示格式
       _calendar.DayNameFormat = DayNameFormat.Full;
       _calendar.FirstDayOfWeek = System.Web.UI.WebControls.FirstDayOfWeek.Default;
       
       //边界
       _calendar.DayStyle.BorderWidth = 0;
       _calendar.EnableViewState = true;
       
       //其他月份
       _calendar.OtherMonthDayStyle.ForeColor = Color.FromArgb(219,242,244);
       _calendar.OtherMonthDayStyle.BackColor = Color.FromArgb(219,242,244);
               
       //字体
       _calendar.Font.Name = "Arial";
       _calendar.ForeColor = Color.Green;
       
       //日期样式
       _calendar.DayStyle.ForeColor = Color.Black;
       _calendar.DayStyle.BackColor = Color.FromArgb(219,242,244);
       
       //标题部分
       _calendar.TitleStyle.HorizontalAlign = HorizontalAlign.Right;
       _calendar.TitleStyle.BackColor = Color.FromArgb(219,242,244);
       
       //星期头部分
       _calendar.DayHeaderStyle.BorderStyle = BorderStyle.Double;
       _calendar.DayHeaderStyle.BackColor = Color.FromArgb(124,135,141);
       _calendar.DayHeaderStyle.ForeColor = Color.White;
       _calendar.DayHeaderStyle.BorderColor = Color.FromArgb(219,242,244);
       _calendar.DayHeaderStyle.BorderWidth = 4;
       _calendar.DayHeaderStyle.Height = 1;
       
       //显示上/下月
       _calendar.ShowNextPrevMonth = true;
       
       #endregion
       
       #region Event

       //事件
                _calendar.DayRender += new System.Web.UI.WebControls.DayRenderEventHandler(Calendar_DayRender);
       _calendar.PreRender += new System.EventHandler(Calendar_PreRender);

       #endregion

       Controls.Add(_imageTop);
       Controls.Add(_imageTitle);
       Controls.Add(_calendar);
       Controls.Add(_imageDownBlack);
       Controls.Add(_imageMore);
      }

      #endregion

      #region RenderWebPart

      /// <summary>
      /// Render this Web Part to the output parameter specified.
      /// </summary>
      /// <param name="output"> The HTML writer to write out to </param>
      protected override void RenderWebPart(HtmlTextWriter output)
      {
       try
       {
        string titleStr="";
        if(_StyleServer!="" && _StyleName!="")
         titleStr=SPDB.Business.SPDBCommon.GetTitleStr(_StyleServer,_StyleName);

        if (titleStr!="")
        {
         titleStr = titleStr.Replace("#Title#",this.Title);
         titleStr = titleStr.Replace("#MoreUrl#",this.DetailLink);
         titleStr = titleStr.Replace("#Description#",this.Description);
         titleStr = titleStr.Replace("#AreaDescription#","");
         titleStr = titleStr.Replace("#Detail#","");
        }
        
        output.Write(titleStr);
                    RenderChildren(output);
       }
       catch (Exception ex)
       {
        output.Write(ex.Message);
       }
       finally
       {
        output.Flush();
       }
      }

      #endregion

      #region Event Calendar_DayRender & Calendar_PreRender

      private void Calendar_DayRender(object sender, DayRenderEventArgs e)
      {
       thread.CurrentCulture = this.oldCulture;
               
       //Get each day's events and set it to Tooltips.
       GetEventSetTooltip(sender,e);
      }
      
      //Change Date Style is "日", "一", "二", "三", "四", "五", "六"

      private void Calendar_PreRender(object sender, EventArgs e)
      {
       thread = System.Threading.Thread.CurrentThread;
       oldCulture = thread.CurrentCulture;
       CultureInfo newci = (CultureInfo)oldCulture.Clone();
       newci.DateTimeFormat.DayNames = new string[] { "日", "一", "二", "三", "四", "五", "六" };
       newci.DateTimeFormat.FirstDayOfWeek = DayOfWeek.Sunday;
       thread.CurrentCulture = newci;
      }

      #endregion

      #region GetEventSetTooltip

      private void GetEventSetTooltip (object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
      {
       e.Cell.Text = e.Day.DayNumberText;

       SPSite site=null;
       SPWeb mySite=null;

       try
       {
        string serverStr="",areaStr;

        if (EventDetailUrl!="")
        {
         int i = EventDetailUrl.IndexOf("/",7);
         serverStr = EventDetailUrl.Substring(0,i);
         areaStr = EventDetailUrl.Substring(serverStr.Length);

         site = new SPSite(serverStr);
         mySite = site.OpenWeb(areaStr);
        }
        else
        {
         site = SPControl.GetContextSite(Context);
         mySite = site.OpenWeb();
        }

        // Start to search the events of current day.
        SPList list = mySite.Lists[EventListName];

        string detailUrl = serverStr + list.DefaultViewUrl;

        SPQuery query = new SPQuery();
        query.Query = String.Format("<Where>"
         + "<Or>"
         + "<And>"
         + "<Or>"
         + "<And>"
         + "<Leq>"
         + "<FieldRef Name=\"EventDate\"></FieldRef>"
         + "<Value Type=\"DateTime\">"
         + "{0}"
         + "</Value>"
         + "</Leq>"
         + "<Geq>"
         + "<FieldRef Name=\"EndDate\"></FieldRef>"
         + "<Value Type=\"DateTime\">"
         + "{0}"
         + "</Value>"
         + "</Geq>"
         + "</And>"
         + "<And>"
         + "<Eq>"
         + "<FieldRef Name=\"EventDate\"></FieldRef>"
         + "<Value Type=\"DateTime\">"
         + "{0}"
         + "</Value>"
         + "</Eq>"
         + "<IsNull>"
         + "<FieldRef Name=\"EndDate\"></FieldRef>"
         + "</IsNull>"
         + "</And>"
         + "</Or>"
         + "<Eq>"
         + "<FieldRef Name=\"fRecurrence\"></FieldRef>"
         + "<Value Type=\"Integer\">0</Value>"
         + "</Eq>"
         + "</And>"
         + "<And>"
         + "<And>"
         + "<Leq>"
         + "<FieldRef Name=\"EventDate\"></FieldRef>"
         + "<Value Type=\"DateTime\">"
         + "{0}"
         + "</Value>"
         + "</Leq>"
         + "<Geq>"
         + "<FieldRef Name=\"EndDate\"></FieldRef>"
         + "<Value Type=\"DateTime\">"
         + "{0}"
         + "</Value>"
         + "</Geq>"
         + "</And>"
         + "<Neq>"
         + "<FieldRef Name=\"fRecurrence\"></FieldRef>"
         + "<Value Type=\"Integer\">0</Value>"
         + "</Neq>"
         + "</And>"
         + "</Or>"
         + "</Where>", e.Day.Date);

        SPListItemCollection items = list.GetItems(query);

        String strTooltip = "";
        foreach (SPListItem item in items)
        {
         if (SPDBCommon.ObjToStr(item["fRecurrence"]) == "0")
         {
          strTooltip += SPDBCommon.ObjToStr(item["Title"]) + "("
           + SPDBCommon.FormatDateTime(item["EventDate"]) + " ~ "
           + SPDBCommon.FormatDateTime(item["EndDate"]) + ")"
           + "\n";
         }
         else
         {
          if (IsDateOverlaped(e.Day.Date, (DateTime)item["EventDate"], SPDBCommon.ObjToStr(item["RecurrenceData"])))
          {
           strTooltip += SPDBCommon.ObjToStr(item["Title"]) + "("
            + SPDBCommon.FormatDateTime(item["EventDate"]) + " ~ "
            + SPDBCommon.FormatDateTime(item["EndDate"]) + ")"
            + "\n";
          }
         }
        }

        if (strTooltip != "")
        {
         //判断是否是当前月
         if(!e.Day.IsOtherMonth)
         {
          e.Cell.Font.Underline = true;
         }
         else{
          e.Cell.Font.Size = -1;
          e.Cell.Enabled = false;
         }
         e.Cell.ToolTip = strTooltip;
         e.Cell.Text = "<a href='" + detailUrl + "?CalendarDate=" + SPDBCommon.FormatDateTime(e.Day.Date)+"'";
         if (NewWindow)
          e.Cell.Text += " target=_blank";
         e.Cell.Text += ">" + e.Day.DayNumberText + "</a>";
        }
       }
       catch (System.Exception ex)
       {
        e.Cell.ToolTip += ex.Message;
       }
       finally
       {
        site.Close();
        mySite.Close();
       }
      }

      #endregion
      
      #region IsDateOverlaped

      /// <summary>
      /// If fRecurrence == -1, then check if current day is Overlaped with the event.
      /// </summary>
      /// <param name="dtCurrent">current day</param>
      /// <param name="dtStart">the day when the event start</param>
      /// <param name="strXML">the event description.</param>
      /// <returns>true if the current day is overlaped with the event</returns>
      private bool IsDateOverlaped(DateTime dtCurrent, DateTime dtStart, string strXML)
      {
       string sFirstDayOfWeek;
       double dFrequency;
       TimeSpan TS = new TimeSpan(dtCurrent.Ticks - dtStart.Ticks);
       object[] arrWeekday = {
               new object[] {"su", DayOfWeek.Sunday},
               new object[] {"mo", DayOfWeek.Monday},
               new object[] {"tu", DayOfWeek.Tuesday},
               new object[] {"we", DayOfWeek.Wednesday},
               new object[] {"th", DayOfWeek.Thursday},
               new object[] {"fr", DayOfWeek.Friday},
               new object[] {"sa", DayOfWeek.Saturday}
              };
       

       XmlDocument xmlDoc = new XmlDocument();
       xmlDoc.LoadXml(strXML);

       sFirstDayOfWeek = xmlDoc.SelectSingleNode("/recurrence/rule/firstDayOfWeek").InnerText;

       XmlNode repeatChildNode = xmlDoc.SelectSingleNode("/recurrence/rule/repeat").FirstChild;

       switch (repeatChildNode.Name)
       {
        case "daily":
         dFrequency = Convert.ToDouble(repeatChildNode.Attributes["dayFrequency"].InnerText);
         if (TS.TotalDays % dFrequency == 0)
          return true;
         break;
        case "weekly":
         foreach(object[] oWeekday in arrWeekday)
         {
          if (dtCurrent.DayOfWeek != (DayOfWeek)oWeekday[1])
           continue;
          if (repeatChildNode.Attributes.GetNamedItem(oWeekday[0].ToString()) == null)
           continue;
          if (repeatChildNode.Attributes[oWeekday[0].ToString()].InnerText == "TRUE")
          {
           dFrequency = Convert.ToDouble(repeatChildNode.Attributes["weekFrequency"].InnerText);
           if (Convert.ToInt32(TS.TotalDays/7) % dFrequency == 0)
            return true;
          }
         }
         break;
        case "monthly":
         if (dtCurrent.Day.ToString() != repeatChildNode.Attributes["day"].InnerText)
          return false;
         dFrequency = Convert.ToDouble(repeatChildNode.Attributes["monthFrequency"].InnerText);
         if (DateAndTime.DateDiff(DateInterval.Month,dtStart, dtCurrent, Microsoft.VisualBasic.FirstDayOfWeek.Monday, Microsoft.VisualBasic.FirstWeekOfYear.System) % dFrequency == 0)
          return true;
         break;
        case "monthlyByDay":
         if (GetWeekdayOfMonth(dtCurrent).IndexOf(repeatChildNode.Attributes["weekdayOfMonth"].InnerText) == -1)
          return false;

         foreach(object[] oWeekday in arrWeekday)
         {
          if (dtCurrent.DayOfWeek != (DayOfWeek)oWeekday[1])
           continue;
          if (repeatChildNode.Attributes.GetNamedItem(oWeekday[0].ToString()) == null)
           continue;
          if (repeatChildNode.Attributes[oWeekday[0].ToString()].InnerText == "TRUE")
          {
           dFrequency = Convert.ToDouble(repeatChildNode.Attributes["monthFrequency"].InnerText);
           if (DateAndTime.DateDiff(DateInterval.Month,dtStart, dtCurrent, Microsoft.VisualBasic.FirstDayOfWeek.Monday, Microsoft.VisualBasic.FirstWeekOfYear.System) % dFrequency == 0)
            return true;
          }
         }
         break;
        case "yearly":
         if (dtCurrent.Month != dtStart.Month || dtCurrent.Day != dtStart.Day)
          return false;
         dFrequency = Convert.ToDouble(repeatChildNode.Attributes["yearFrequency"].InnerText);
         if ((dtCurrent.Year - dtStart.Year) % dFrequency == 0)
          return true;
         break;
       }

       return false;
      }

      #endregion

      #region GetWeekdayOfMonth

      /// <summary>
      /// Get the weekday number of the month.
      /// </summary>
      /// <param name="dtCurrent"></param>
      /// <returns></returns>
      private string GetWeekdayOfMonth(DateTime dtCurrent)
      {
       DateTime dtFirstDayOfMonth = new DateTime(dtCurrent.Year, dtCurrent.Month, 1);
       TimeSpan TS = new TimeSpan(dtCurrent.Ticks - dtFirstDayOfMonth.Ticks);

       DateTime dtLastDayOfMonth = dtFirstDayOfMonth.AddMonths(1).AddDays(-1);
       TimeSpan tsLast = new TimeSpan(dtLastDayOfMonth.Ticks - dtCurrent.Ticks);

       string sRet = "";

       switch (Convert.ToInt16(TS.TotalDays/7))
       {
        case 0:
         sRet += "first";
         break;
        case 1:
         sRet += "second";
         break;
        case 2:
         sRet += "third";
         break;
        case 3:
         sRet += "fourth";
         break;
       }

       // Maybe the last week also is the fourth week.
       if (Convert.ToInt16(tsLast.TotalDays/7) == 0)
        sRet += ";last";

       return sRet;
      }

      #endregion

     }
    }

    ------------------------------------------------------------------

    using System;
    using Microsoft.SharePoint;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.IO;
    using System.Xml;
    using Microsoft.SharePoint.Utilities;

    namespace SPDB.Business
    {
     /// <summary>
     /// Summary description for SPDBCommon.
     /// </summary>
     public class SPDBCommon
     {
      public SPDBCommon()
      {
       //
       // TODO: Add constructor logic here
       //
      }


      public static void WriteLog(string sLogFile, string sLogMessage)
      {
       try
       {
        StreamWriter w = File.AppendText(sLogFile);

        w.Write("\r\nLog Entry : ");
        Console.Write("\r\nLog Entry : ");
        w.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),
         DateTime.Now.ToLongDateString());
        Console.WriteLine("{0} {1}", DateTime.Now.ToLongTimeString(),
         DateTime.Now.ToLongDateString());
        w.WriteLine("  {0}", sLogMessage);
        Console.WriteLine("  {0}", sLogMessage);
        // Update the underlying file.
        w.Flush();

        // Close the writer and underlying file.
        w.Close();

       }
       catch(Exception e)
       {
        Console.Write(e.Message );
       }
      }

      /// <summary>
      /// Check if the news file is already uploaded.
      /// </summary>
      /// <param name="strFile"></param>
      /// <returns></returns>
      public static bool IsFileUploaded(string strFile)
      {
       string sTemp = "NoDocID";

       string sDocID = strFile.Substring(0, strFile.LastIndexOf("."));
       sDocID = sDocID.Substring(sDocID.LastIndexOf("_") + 1);

       if (sDocID == "") return false;

       string sConnectionString = ConfigurationSettings.AppSettings.Get("SPDB.WorldNewsExterior.SQLConnectionString");
       
       string strSQL = "SELECT ext8 FROM CMS_DOCMAIN WHERE doc_id = " + sDocID;

       SqlConnection newsConn = new SqlConnection(sConnectionString);

       SqlCommand selectCMD = new SqlCommand(strSQL, newsConn);
       selectCMD.CommandTimeout = 5;

       newsConn.Open();

       SqlDataReader reader = reader = selectCMD.ExecuteReader();

       if (reader.Read())
       {
        sTemp = reader.GetString(0);
       }

       newsConn.Close();

       // If already uploaded or NoDocID in this database, then not need upload, so return true;
       if (sTemp == "Uploaded" || sTemp == "NoDocID")
       {
        return true;
       }

       return false;
      }

      /// <summary>
      /// Convert object to string, return "" if object is null.
      /// </summary>
      /// <param name="oItem">input object param</param>
      /// <returns></returns>
      public static string ObjToStr(object oItem)
      {
       if (oItem == null)
       {
        return "";
       }
       else
       {
        return oItem.ToString();
       }
      }

      /// <summary>
      /// Convert date object to string.
      /// </summary>
      /// <param name="oItem">input date object param</param>
      /// <returns></returns>
      public static string FormatDateTime(object oItem)
      {
       if (oItem == null)
       {
        return "";
       }
       else
       {
        DateTime dtItem = (DateTime)oItem;
        return dtItem.Year + "-" + dtItem.Month + "-" + dtItem.Day;
       }
      }

      /// <summary>
      /// Get the world news file name. This logic come from outter news system of ChuangYang company.
      /// </summary>
      /// <param name="sDate"></param>
      /// <param name="sChID"></param>
      /// <param name="sDocID"></param>
      /// <returns></returns>
      public static string GetWorldNewsFileName(string sDate, string sChID, string sDocID)
      {
       DateTime dtTemp = DateTime.Parse(sDate);

       return FormatNumberString(dtTemp.Year.ToString(), 4)
        + FormatNumberString(dtTemp.Month.ToString(), 2)
        + "/"
        + FormatNumberString(dtTemp.Month.ToString(),2)
        + FormatNumberString(dtTemp.Day.ToString(),2)
        + "_"
        + sChID
        + "_"
        + sDocID
        + ".aspx";
      }

      /// <summary>
      /// Add the "0" char at the begin of the string.
      /// </summary>
      /// <param name="sNumber"></param>
      /// <param name="iLen"></param>
      /// <returns></returns>
      public static string FormatNumberString(string sNumber, int iLen)
      {
       return ((string)("0000000000" + sNumber)).Substring(10 + sNumber.Length - iLen);
      }

      /// <summary>
      /// Set file uploaded flag.
      /// </summary>
      /// <param name="strFile"></param>
      public static void SetFileUploaded(string strFile)
      {
       string sDocID = strFile.Substring(0, strFile.LastIndexOf("."));
       sDocID = sDocID.Substring(sDocID.LastIndexOf("_") + 1);

       if (sDocID == "") return;

       string sConnectionString = ConfigurationSettings.AppSettings.Get("SPDB.WorldNewsExterior.SQLConnectionString");
       
       string strSQL = "UPDATE CMS_DOCMAIN SET ext8 = 'Uploaded' WHERE doc_id = " + sDocID;

       SqlConnection newsConn = new SqlConnection(sConnectionString);

       SqlCommand updateCMD = new SqlCommand(strSQL, newsConn);
       updateCMD.CommandTimeout = 5;
       newsConn.Open();

       int intRows = updateCMD.ExecuteNonQuery();

       // Copy the record to table CMSNEWS of internal sql server.
       updateCMD.CommandText = "SELECT * FROM CMSNEWS WHERE doc_id = " + sDocID;
       SqlDataReader dbReader = updateCMD.ExecuteReader();
       
       string sInternalConnectionString = ConfigurationSettings.AppSettings.Get("SPDB.WorldNews.SQLConnectionString");
       
       if (dbReader.Read())
       {
        strSQL = "SELECT type_id, typecode, typename, CHID, DIST_TIME, AUDIT_STATUS,"
         + " doc_id, doc_title, doc_dt_lastmodified, doc_dt_new, ext8, doc_level, doc_hot"
         + " FROM CMSNEWS WHERE doc_id = " + sDocID;

        SqlDataAdapter dbAdapter = new SqlDataAdapter(strSQL, sInternalConnectionString);
        SqlCommandBuilder dbCMDBuilder = new SqlCommandBuilder(dbAdapter);
        DataTable dtNews = new DataTable();

        dbAdapter.Fill(dtNews);

        DataRow drNews;
        if (dtNews.Rows.Count == 0)
        {
         drNews = dtNews.NewRow();
        }
        else
        {
         drNews = dtNews.Rows[0];
        }
        drNews["type_id"] = dbReader.GetValue(0);
        drNews["typecode"] = dbReader.GetValue(1);
        drNews["typename"] = dbReader.GetValue(2);
        drNews["CHID"] = dbReader.GetValue(3);
        drNews["DIST_TIME"] = dbReader.GetValue(4);
        drNews["AUDIT_STATUS"] = dbReader.GetValue(5);
        drNews["doc_id"] = dbReader.GetValue(6);
        drNews["doc_title"] = dbReader.GetValue(7);
        drNews["doc_dt_lastmodified"] = dbReader.GetValue(8);
        drNews["doc_dt_new"] = dbReader.GetValue(9);
        drNews["ext8"] = dbReader.GetValue(10);
        drNews["doc_level"] = dbReader.GetValue(11);
        drNews["doc_hot"] = dbReader.GetValue(12);

        if (dtNews.Rows.Count == 0)
        {
         dtNews.Rows.Add(drNews);
        }

        dbAdapter.Update(dtNews);
       }

       newsConn.Close();

      }

      /// <summary>
      /// Create Xml for WorldNews webpart.
      /// </summary>
      public static void CreateWorldNewsXml()
      {
       try
       {
        string destPath = ConfigurationSettings.AppSettings.Get("destWorldNewsXmlPath");
        if (destPath!="")
        {
         StreamWriter sw = File.CreateText(destPath + "\\WorldNews.xml");

         string strTemp = "";
         string strSQL = "SELECT TOP 100 * FROM CMSNEWS WHERE ext8 = 'Uploaded' ORDER BY dist_time DESC, type_id";
         //string strSQL = ConfigurationSettings.AppSettings.Get("strSQL_GetWorldNews");

         SqlConnection newsConn = new SqlConnection(ConfigurationSettings.AppSettings.Get("SPDB.WorldNewsExterior.SQLConnectionString"));

         SqlCommand selectCMD = new SqlCommand(strSQL, newsConn);
         SqlDataAdapter custDA = new SqlDataAdapter();
         custDA.SelectCommand = selectCMD;

         newsConn.Open();

         DataSet custDS = new DataSet();
         custDA.Fill(custDS, "WorldNews");
       
         sw.Write("<WorldNews>\n");
       
         foreach (DataRow row in custDS.Tables["WorldNews"].Rows)
         {
          strTemp = GetWorldNewsFileName(row["doc_dt_new"].ToString(),
           row["chid"].ToString(),
           row["doc_id"].ToString());

          sw.Write ("<News Title=\"" + SPEncode.HtmlEncode(row["doc_title"].ToString()) + "\" Page=\"" + strTemp + "\" doc_dt_new=\"" + row["doc_dt_new"].ToString() + "\"/>\n");
         }

         sw.Write("</WorldNews>\n");
         sw.Close();

         newsConn.Close();
        }
        else
        {
         throw(new Exception("No destWorldNewsXmlPath Configuration!"));
        }
       }
       catch(Exception e)
       {
        throw(e);
       }
      }

      
      public static string GetTitleStr(string styleServer, string styleName)
      {
       string titleStr="";
       SPSite sites = new SPSite(styleServer);
       SPWeb mysite = sites.OpenWeb("/sites/siteconfig");
     
       SPListItemCollection items = mysite.Lists["stylelibrary"].Items;

       string styleUrl;
       foreach (SPListItem item in items)
       {
        if (item["BaseName"].ToString()==styleName)
        {
         if (item.File.Exists)
         {
          styleUrl =styleServer + item.File.ServerRelativeUrl;
          System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(styleUrl);
          System.Net.ICredentials credentials = System.Net.CredentialCache.DefaultCredentials;
          request.Credentials = credentials;
          System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
          System.IO.Stream stream = response.GetResponseStream();

          System.IO.StreamReader reader = new System.IO.StreamReader(stream,System.Text.Encoding.UTF8);

          titleStr = reader.ReadToEnd();
          int start = titleStr.IndexOf("<!-- Begin Panel Layout -->");
          int end = titleStr.IndexOf("<!-- End Panel Layout -->");
          if (start>0 && end > start)
           titleStr = titleStr.Substring(start,end-start);
         }
        }
       }
       return titleStr;
      }
     }
    }

  • 相关阅读:
    java 九个预定义Class对象
    Android github上开源项目、酷炫的交互动画和视觉效果地址集合
    Axure多人协作
    尺取法
    android binder 机制二(client和普通server)
    11-11前的电商
    用minGW编译ffmpeg(供替换opencv中引用的ffmpeg库)
    设计模式_状态模式
    六句代码实现对文件按时间的重命名,
    在QML应用中实现threading多任务
  • 原文地址:https://www.cnblogs.com/RuiLei/p/299597.html
Copyright © 2020-2023  润新知