smileNewfreedom

블로그 이미지
freedom 모든 자유와 시간을 위해.....
by 다크포스
10-16 18:25
  • 679,965Total hit
  • 3Today hit
  • 10Yesterday hit

CALENDAR

«   2021/10   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            


MOSS 에서 사용하는 WebPart 로 구현한 것

1. Visual studio로  NEW Project를  WebPart로 만들고.
2. 소스를 코딩후
3. 배포..
4. 배포된 WebPart를 MOSS에서 WebPart 추가로 완결..

 using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using System.Data;
using System.Web.UI.WebControls;
using System.Text;

namespace CheckDay
{
    [Guid("9a6e8ced-5e47-4062-a503-809ed3867d87")]
    public class CheckDay : System.Web.UI.WebControls.WebParts.WebPart
    {       
        private string listName = string.Empty;
        private Button btnStart;
        private Button btnEnd;

        [
        Personalizable(true),
        WebBrowsable(true),
        WebDisplayName("근퇴관리"),
        WebDescription("출근, 퇴근 관리하는 웹파트")
        ]

        public string ListName
        {
            get { return listName; }
            set { listName = value; }
        }

        //moss 페이지에 버튼 생성
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            this.Controls.Add(btnStart);
            this.Controls.Add(btnEnd);
        }
       
        //버튼 만들어 주기
        public CheckDay()
        {
            this.ExportMode = WebPartExportMode.All;
            btnStart = new Button();
            btnEnd = new Button();

            btnStart.Text = "출근";
            btnEnd.Text = "퇴근";

            btnStart.Click += new EventHandler(btnStart_Click);
            btnEnd.Click += new EventHandler(btnEnd_Click);
        }

        //출근 버튼을 클릭 했을때
        void btnStart_Click(object sender, EventArgs e)
        {
            SPWeb web = SPContext.GetContext(this.Context).Web;

            if (string.IsNullOrEmpty(listName))
                return;

            SPList list = web.Lists[listName];

            SPListItem it = list.Items.Add();
            it["Title"] = "출근";
            it["EventDate"] = DateTime.Now;
            it["EndDate"] = DateTime.Now;           

            web.AllowUnsafeUpdates = true;
            it.Update();
            web.AllowUnsafeUpdates = false;
        }

        //퇴근 버튼을 클릭 했을때
        void btnEnd_Click(object sender, EventArgs e)
        {        
            SPWeb web = SPContext.GetContext(this.Context).Web;
           
            if (string.IsNullOrEmpty(listName))
                return;

            SPList list = web.Lists[listName];

            SPQuery query = new SPQuery();
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append("  <Where>");
            stringBuilder.Append("    <Eq>");
            stringBuilder.Append("      <FieldRef Name=\"Author\" />");
            stringBuilder.Append("      <Value Type=\"integer\"><UserID /></Value>");
            stringBuilder.Append("    </Eq>");
            stringBuilder.Append("  </Where>");
            stringBuilder.Append("  <OrderBy>");
            stringBuilder.Append("    <FieldRef Name=\"EventDate\" Ascending=\"FALSE\" />");
            stringBuilder.Append("  </OrderBy>");
            query.Query = stringBuilder.ToString();
            query.RowLimit = 1;

            SPListItemCollection items = list.GetItems(query);

            if (items.Count > 0)
            {
                SPListItem it = items[0];

                SPListItem itNew = items.Add();
                itNew["Title"] = "출근";
                itNew["EventDate"] = it["EventDate"];
                itNew["EndDate"] = DateTime.Now;

                items.Delete(0);

                web.AllowUnsafeUpdates = true;

                try { itNew.Update(); }
                catch (SPException ex) { throw ex; }
               
                web.AllowUnsafeUpdates = false;
            }

        }

        private string IsChecked(bool p)
        {
            string sCheck = string.Empty;
            string title = string.Empty;
            string date = DateTime.Now.ToShortDateString(); // 2007-09-18           

            SPWeb web = SPContext.GetContext(this.Context).Web;

            if (string.IsNullOrEmpty(listName))
                return sCheck;

            SPList list = web.Lists[listName];

            //SPListItem itm = list.Items[0];
            //SPUser user = (SPUser)itm["Author"];

            title = (p) ? "출근" : "퇴근";

            SPQuery query = new SPQuery();

            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.Append("  <Where>");
            stringBuilder.Append("    <Eq>");
            stringBuilder.Append("      <FieldRef Name=\"Author\" />");
            stringBuilder.Append("      <Value Type=\"Integer\"><UserID /></Value>");
            stringBuilder.Append("    </Eq>");
            stringBuilder.Append("  </Where>");
            stringBuilder.Append("  <OrderBy>");
            stringBuilder.Append("    <FieldRef Name=\"EventDate\" Ascending=\"FALSE\" />");
            stringBuilder.Append("  </OrderBy>");

            query.Query = stringBuilder.ToString();
            query.RowLimit = 1;

            SPListItemCollection items = list.GetItems(query);
           
            if (items.Count > 0)
            {
                using (DataTable dt = items.GetDataTable())
                {
                    DataRow dr = dt.Rows[0];

                    if (
                        p == true // 출근모드
                        && dr["EventDate"].ToString().Split(' ').GetValue(0).ToString().Trim() == date // 날자가 오늘날자와 같은가?
                        )
                    {
                        sCheck = dr["EventDate"].ToString(); // 이미 출근 체크하였다
                    }
                    else if (
                        p == false
                        && dr["EndDate"].ToString( ) != dr["EventDate"].ToString() // 퇴근을 체크했는가?
                        && dr["EventDate"].ToString().Split(' ').GetValue(0).ToString().Trim() == date // 날자가 오늘날자와 같은가?
                        )
                    {
                        // 퇴근모드
                        sCheck = dr["EndDate"].ToString();
                    }
                    string a = dr["EndDate"].ToString().Split(' ').GetValue(0).ToString().Trim();
                    string b = dr["EventDate"].ToString().Split(' ').GetValue(0).ToString().Trim();
                }
            }

            return sCheck;
        }

        protected override void Render(HtmlTextWriter writer)
        {           
            string date = string.Empty;
            SPWeb web = SPContext.GetContext(this.Context).Web;

            if (string.IsNullOrEmpty(listName))
            {
                writer.Write("웹파트 설정에서 '일정' 형태의 목록을 만들어 추가로 설정해 주시기 바랍니다.");
                return;
            }

            SPList list = web.Lists[listName];

            writer.Write("출근 : ");

            if (string.IsNullOrEmpty(date = IsChecked(true)) == false)
            {
                // 출근을 이미 찍었을 경우
                writer.WriteLine(date);
            }

            else
            {
                // 출근을 아직 찍지 않은 경우
                btnStart.RenderControl(writer);
            }

            writer.Write("<br />");
            writer.Write("퇴근 : ");

            if (string.IsNullOrEmpty(date = IsChecked(false)) == false)
            {
                // 퇴근을 이미 찍었을 경우
                writer.WriteLine(date);
            }

            else
            {
                // 퇴근을 아직 찍지 않은 경우
                btnEnd.RenderControl(writer);
            }
           
        }

    }

}

'.NET > MOSS' 카테고리의 다른 글

Microsoft Office SharePoint Server 2007  (0) 2007.10.23
MOSS 개발 환경  (0) 2007.10.08
MOSS =>출.퇴근 체크  (2) 2007.10.04
MOSS => WebPart  (1) 2007.10.04
InfoPath 개발자를 위한 새로운 기능  (1) 2007.09.19
InfoPath 2007  (0) 2007.09.13
TRACKBACK 0 AND COMMENT 2
  1. Favicon of http://wetgirl-2008.com/free/jjj-s-thumb BlogIcon jjj s thumb 2008.03.13 05:48 address edit/delete reply

    너는 아름다운 웹사이트가 있는다!

  2. Favicon of http://ftvheavenfemme.net/czn/lady-englander-mattresses BlogIcon lady englander mattresses 2008.05.23 05:02 address edit/delete reply

    걸출한 디자인! 좋은 디자인.





ARTICLE CATEGORY

분류 전체보기 (534)
멋진 사진들 (8)
배경화면들 (3)
.NET (112)
연애이슈 (65)
게임관련 (15)
경제 이슈 (60)
모델 (0)
사진(취미) (14)
노래 (8)
호주워킹홀리데이 (11)
Javascript (2)
Ajax (4)
스포츠 (74)
우주/과학/생활 (95)
Windows 2008 (19)
Silverlight (2)
여행 (6)
MS 자격증 (2)
해외이슈 (4)
IT정보 (16)
Server (5)
애니매이션 (9)