using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace SPSEDUproject.BookListWebPart
{
    /// <summary>
    /// WebPart로 SPQuery 클래스를 사용하여 책제목(Title)이 같은 것만 리스트에 출력하기.
    /// </summary>
    [ToolboxItemAttribute(false)]
    public class BookListWebPart : WebPart
    {
        string strBookList = String.Empty;

        protected override void CreateChildControls()
        {
            strBookList = makeBookList();
        }

        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);
            writer.Write(strBookList);
        }

        private string makeBookList()
        {
            string tempSTR = String.Empty;

            // 사이트모음/사이트를 잡는다.
            SPWeb web = SPContext.Current.Web;    // SPSite를 생략하고 코딩하는 방법.

            // 리스트를 잡는다.
            SPList books = web.GetList("Lists/edulist");

            // 북리스트를 뿌린다. --> SPQuery 클래스 사용
            SPQuery query = new SPQuery();
            query.RowLimit = 10;    // 상위 10개 행만 필터링한다.(= Top 10)
            query.Query = "<Where><Eq><FieldRef Name='Title'/>" +
                            "<Value Type='Text'>나의책</Value></Eq></Where><OrderBy><FieldRef Name='Title' Ascending='FALSE'/></OrderBy>";

            SPListItemCollection bookcol = books.GetItems(query);

            foreach (SPListItem book in bookcol)
            {
                tempSTR += book["Title"].ToString();
                tempSTR += "<br />";
            }

            return tempSTR;
        }
    }
}



Posted by holland14
:


[ EDUNewBookUserControl.ascx ]



<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="EDUNewBookUserControl.ascx.cs" Inherits="SPSEDUproject.EDUNewBook.EDUNewBookUserControl" %>


<asp:Label ID="lblTitle" runat="server" Text="책제목" />&nbsp;
<asp:TextBox ID="txtTitle" runat="server" /><br />
<asp:Label ID="lblCompany" runat="server" Text="출판사" />&nbsp;
<asp:TextBox ID="txtCompany" runat="server" /><br />
<asp:Label ID="lblAuthor" runat="server" Text="저자" />&nbsp;&nbsp;&nbsp;
<asp:TextBox ID="txtAuthor" runat="server" /><br /><br />
<asp:Button ID="btnSave" runat="server" Text="저장" onclick="btnSave_Click" />





======================================================================================================================




[ EDUNewBookUserControl.ascx ]




using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;

namespace SPSEDUproject.EDUNewBook
{
    public partial class EDUNewBookUserControl : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void btnSave_Click(object sender, EventArgs e)
        {
            // 책제목과 출판사, 저자를 목록에 Insert한다.
            string strTitle = this.txtTitle.Text;
            string strCompany = this.txtCompany.Text;
            string strAuthor0 = this.txtAuthor.Text;

            if (strTitle == "") return;
            if (strCompany == "") return;
            if (strAuthor0 == "") return;

            SPSite site = SPContext.Current.Site; // 현재 열려있는 SharePoint웹사이트(=웹페이지)를 호출한다.
            SPWeb web = site.OpenWeb();     // OpenWeb() : 웹사이트를 잡아준다(= 열어준다). 괄호 ()안에 경로를 잡아주면 해당 웹페이지를 잡아준다.

            SPList bookList = web.GetList("Lists/edulist");    // SPList : SharePoint목록 --> GetList(url)메서드를 호출하여 해당 url의 목록을 가져와서 대입.

            SPListItem book = bookList.AddItem();    // SPListItem : SharePoint항목 --> SPList(목록)의 AddItem()메서드를 호출하여 목록에 항목(= 1개의 행)을 추가한다.

            book["Title"] = strTitle;
            book["Company"] = strCompany;
            book["Author0"] = strAuthor0;
            book.Update();    // SPListItem의 Update()메서드를 호출하여 업데이트(--> 여기서는 Insert작업) 한다.
        }
    }
}





// SPSite.OpenWeb() 메서드 : Returns the specified Web site from the site collection.(= 사이트모음(= SPSite)으로부터 특정한 웹사이트(= SPWeb)를 리턴한다.)




Posted by holland14
:

1. 솔루션 탐색기에서 해당 상위 프로젝트를 "빌드"한다.

2. 솔루션 탐색기에서 해당 상위 프로젝트를 "배포"한다.

3. 해당 웹사이트로 이동하여 결과를 확인한다.

Posted by holland14
: