ASP.NET 실습: 웹 위젯에 대한 데이터 바인딩 컨트롤 인스턴스 구축 및 실행

11418 단어 asp.net
본고는 WebPart 데이터 귀속 컨트롤을 구축하고 실행하는 설명을 포함하고, 문장 [웹 위젯의 데이터 귀속 컨트롤 실례]에서 완전한 코드 실례를 제공합니다.코드 실례는 GridView 컨트롤을 데이터 원본에 연결하는 사용자 정의 서버 컨트롤을 만드는 방법을 보여 줍니다. 이 컨트롤은 웹Part 클래스를 계승하기 때문에 웹 위젯의 응용 프로그램에 참여할 수 있습니다.본고는 코드 실례를 컴파일하고 이 컨트롤을 웹 위젯 컨트롤로 실행하기 위해 ASP를 설정하는 데 도움을 줄 수 있는 정보를 제공합니다.NET 웹 응용 프로그램.
WebPart 컨트롤 컴파일
코드의 실례를 실행할 수 있도록 하려면, 먼저 원본 코드를 컴파일해야 한다.너는 그것을 명확하게 컴파일해서 결과 집합을 사이트의 빈 디렉터리나 전역 집합 캐시에 저장할 수 있다.또한 원본 코드를 사이트의 App 에 저장할 수 있습니다Code 디렉토리에서는 런타임 시 동적으로 컴파일할 수 있습니다.본고의 코드 실례는 동적 컴파일을 사용한다.컴파일하는 방법에 대한 프레젠테이션 실천은 [ASP.NET 실습: 사용자 정의 서버 컨트롤 개발 및 사용].
동적 컴파일 WebPart 데이터 바인딩 컨트롤
  • 웹 응용 프로그램 루트에 App 만들기코드 디렉토리.
  • 글[웹 위젯의 데이터 귀속 컨트롤 실례]에서 이 사용자 정의 웹 파트 데이터 귀속 컨트롤의 원본 코드를 얻습니다.App에 소스 코드 저장코드 디렉토리에 있습니다.동적 컴파일링을 사용하기 때문에 파일의 이름은 마음대로 지정할 수 있지만, 파일은 적당한 확장자를 가지고 있어야 하며, 예를 들어.cs나.vb 등 프로그래밍 언어와 대응해야 한다.

  • 웹 부품 응용 프로그램에서 이 컨트롤 사용
    웹 위젯을 사용하기 위해 프로그램을 설정하려면 단독 사용자를 식별할 수 있는 ASP가 필요합니다.NET 웹 사이트, 그리고 응용 프로그램 서비스(개성화 포함)를 처리할 수 있는 데이터베이스.이 실례에 관해서는 (데이터 연결 컨트롤을 사용했기 때문에) Web에서도 필요합니다.config 파일에 데이터 원본이Northwind 실례 데이터베이스에 연결될 수 있도록 데이터베이스 연결 열을 만듭니다.응용 프로그램이 설정되면 웹 위젯 응용 프로그램마다 웹 위젯 응용 프로그램에서 웹 파트와 서버 컨트롤을 위탁 관리하는 웹 페이지에 웹 파트 관리자 컨트롤과 최소한 웹 파트 존 컨트롤을 추가해야 합니다.다음 두 번째 과정은 이 컨트롤을 추가하고 실행할 때 페이지에서 데이터 연결 컨트롤의 다른 절차를 완성할 때 필요한 준비 작업을 보여 줍니다.
    ASP를 구성합니다.웹 위젯 컨트롤을 실행하는 NET 응용 프로그램
  • 단독 사용자가 식별할 수 있는 설정된 ASP를 가지고 있는지 확인합니다.NET 웹 응용 프로그램.만약 당신이 사이트를 만드는 방법에 대한 지도를 필요로 한다면 참고: [ASP.NET 실습: IIS에서 가상 디렉토리 생성 및 구성] 또는 [ASP.NET 관행: IIS에서 로컬 ASP를 생성하고 구성합니다.NET 웹 사이트.
  • 설정된 개성화된 공급자와 데이터베이스를 가지고 있는지 확인하십시오.웹 위젯의 개성화는 기본적으로 사용되며, Microsoft SQL Server Express (SSE) 와 함께 SQL 개성화 공급자 (Sql Personalization Provider) 를 사용합니다.이 문서는 SSE와 기본 SQL 공급자를 사용합니다.SSE가 이미 설치되어 있으면 구성할 필요가 없습니다.SSE는 Microsoft Visual Studio 2005의 옵션 설치 섹션이거나 Microsoft에서 사용할 수 있습니다.com 무료 다운로드.전체 버전의 Microsoft SQL Server를 사용하려면 ASP를 설치하고 구성해야 합니다.NET 응용 프로그램 서비스 데이터베이스와 SQL 맞춤형 공급자를 설정하여 이 데이터베이스에 연결합니다.자세한 내용은 [SQL Server에 대한 응용 프로그램 서비스 데이터베이스 작성 및 구성]을 참조하십시오.다른 비SQL 데이터베이스나 저장 프로젝트를 사용할 수 있도록 사용자 정의 공급자를 만들고 설정할 수 있습니다.상세한 내용과 코드 실례에 관해서는 [구성원 자격 제공자 실현]을 참고하십시오.
  • 데이터 귀속 컨트롤을Northwind 실례 데이터베이스에 연결할 수 있는 연결열을 만듭니다.이 인스턴스를 실행하려면 SQL Server에서 제공하는 Northwind 인스턴스 데이터베이스에 액세스해야 합니다.만약 Northwind 실례 데이터베이스를 설치하지 않았다면, Microsoft Download Center에서 관련 스크립트를 다운로드해서 이 데이터베이스를 만들고 설치할 수 있습니다.데이터베이스 연결 문자열에 대한 추천 방법 중 하나는 응용 프로그램의 웹에 저장하는 것이다.config 파일에서프로파일에 대한 자세한 내용은 를 참조하십시오.NET 구성 파일]다음 코드 인스턴스는 Web을 보여줍니다.config 파일의 데이터베이스 연결 문자열입니다. 로컬 SSE에서 실행되는 Northwind 데이터베이스 실례에 연결됩니다.데이터베이스 파일 경로의 인덱스는 실체적으로 나타납니다 (").Web 때문에.config 파일은 XML 파일이므로 이렇게 해야 합니다.
    
    
    <connectionStrings>
    
      <add name="nwind" 
    
        connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=
    
        &quot;C:\SQL Server 2000 Sample Databases\NORTHWND.MDF&quot;;
    
        Initial Catalog=Northwind;Integrated Security=True;"
    
        providerName="System.Data.SqlClient" />
    
    </connectionStrings>
    
    
    알림: 데이터베이스 연결열에 있는 모든 기밀 정보(예를 들어 비밀번호)를 암호화하는 것을 추천합니다.암호화된 구성 데이터에 대한 자세한 내용은 를 참조하십시오.NET 관행: 보호된 구성을 사용하여 구성 정보를 암호화합니다.]
  • 웹에서.config 파일의<시스템.웹 > 부분에 요소를 추가합니다.이것은 웹 위젯 프로그램에서 반드시 필요한 것은 아니지만, 웹 위젯의 일부 특징의 사용은 반드시 이 부분에서 설정해야 한다.WebPart 데이터 바인딩 컨트롤 인스턴스는 상태 및 속성 데이터를 포함하는 구성 파일을 내보냅니다.웹 위젯 프로그램의 내보내기 특징은 기본적으로 비활성화되어 있기 때문에, 부분에서 사용해야 합니다. 요소에 enabled Export 파라미터를 추가하고 그 값을true로 설정합니다. 아래 코드와 같습니다.
    
    
    <webParts enableExport="true" />
    
    
  • Web를 저장하고 닫습니다.config 파일.

  • 웹 페이지에서 웹 부품 컨트롤을 호스팅할 준비
  • 웹 페이지에 사용할 수 있는 웹 위젯 디스플레이 모드를 변환할 수 있는 사용자 컨트롤을 만듭니다.이 컨트롤과 다음 단계에서 웹 위젯의 데이터 귀속 컨트롤의 운행은 필수적이지 않지만, 이것은 대부분의 웹 위젯 페이지에서 비교적 실용적인 특징이다.편집기에서 다음 사용자 컨트롤의 코드를 붙여넣고 웹 응용 프로그램의 루트 디렉터리에 파일을 저장합니다. DisplayModeMenuCS라고 합니다.ascx 또는 DisplayModeMenuVB.ascx (당신이 사용하는 프로그래밍 언어에 따라).
    
    
    <!--                   ,               。 -->
    
    <%@ control language="C#" classname="DisplayModeMenuCS"%>
    
    
    
    <script runat="server">
    
      
    
     //              WebPartManager。
    
      WebPartManager _manager;
    
    
    
      void Page_Init(object sender, EventArgs e)
    
      {
    
        Page.InitComplete += new EventHandler(InitComplete);
    
      }  
    
    
    
      void InitComplete(object sender, System.EventArgs e)
    
      {
    
        _manager = WebPartManager.GetCurrentWebPartManager(Page);
    
    
    
        String browseModeName = WebPartManager.BrowseDisplayMode.Name;
    
    
    
        //                   。
    
        foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
    
        {
    
          String modeName = mode.Name;
    
          //              。
    
          if (mode.IsEnabled(_manager))
    
          {
    
            ListItem item = new ListItem(modeName + " Mode", modeName);
    
            DisplayModeDropdown.Items.Add(item);
    
          }
    
        }
    
    
    
      }
    
     
    
      //               。
    
      void DisplayModeDropdown_SelectedIndexChanged(object sender, 
    
        EventArgs e)
    
      {
    
        String selectedMode = DisplayModeDropdown.SelectedValue;
    
    
    
        WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
    
        if (mode != null)
    
          _manager.DisplayMode = mode;
    
    
    
      }
    
    
    
      void Page_PreRender(object sender, EventArgs e)
    
      {
    
        DisplayModeDropdown.SelectedValue = _manager.DisplayMode.Name;
    
      }
    
      
    
    </script>
    
    <div>
    
      <asp:DropDownList ID="DisplayModeDropdown" 
    
        runat="server"  
    
        AutoPostBack="true" 
    
        OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
    
    </div>
    
    
  • 새 ASP를 만듭니다.NET 페이지에서는 사용자 정의된 WebPart 컨트롤 및 기타 컨트롤을 호스팅합니다.페이지의 페이지 명령 아래에 방금 만든 사용자 컨트롤을 등록하기 위한 Register 명령을 추가합니다.명령어의 내용은 당신이 사용하는 프로그래밍 언어에 달려 있으며, 이것은 아래의 실례와 같아야 한다.
    
    
    <%@ register src="displaymodecs.ascx" tagname="displaymodecs" 
    
        tagprefix="uc1" %>
    
    
  • 현재 사용자 정의 WebPart 컨트롤에 Register 명령을 추가합니다.이 문서는 동적 컴파일을 사용하기 때문에, Register 명령에 Assembly 파라미터를 추가할 필요가 없습니다.Register 명령 아래에 tagprefix 매개 변수에 임의의 문자열을 할당하고namespace 매개 변수에 사용자 정의 컨트롤에 이름 공간을 할당하는 다른 Register 명령을 추가합니다. 이것은 또한 당신이 사용하는 프로그래밍 언어에 달려 있습니다. 아래와 같습니다.
    
    
    <%@ register tagprefix="aspSample" 
    
        namespace="Samples.AspNet.CS.Controls" %>
    
    
  • 요소 사이에 페이지에 요소를 추가합니다. 아래 코드 실례와 같습니다.웹 부품을 사용하는 각 페이지에는 WebPartManager 컨트롤이 필요합니다.
    
    
    <asp:webpartmanager id="WebPartManager1" runat="server">
    
    </asp:webpartmanager>
    
    
  • 요소 아래에서 디스플레이 모드의 전환을 위한 사용자 컨트롤을 설명합니다.컨트롤에 대한 설명은 다음 코드와 같이 프로그래밍 언어에 달려 있습니다.
    
    
    <uc1:displaymodecs id="Displaymodecs1" runat="server" />
    
    
  • 사용자 컨트롤 다음에 컨트롤러의 페이지 레이아웃을 구성하는 표를 추가합니다.표 표시는 아래의 코드 실례와 비슷해야 한다.
    
    
    <table style="width: 80%; position: relative">
    
      <tr valign="top">
    
        <td style="width: 40%">
    
        </td>
    
        <td style="width: 40%">
    
        </td>
    
      </tr>
    
    </table>
    
    
  • 모든 태그에 요소를 추가합니다.WebPartZoneBase 클래스에서 상속된 영역은 WebPart 컨트롤을 포함하고 모든 웹 위젯 기능을 허용할 때 필요합니다.첫 번째 영역의 표시는 아래의 코드 실례와 비슷해야 한다.
    
    
    <asp:webpartzone id="WebPartZone1" runat="server" 
    
      style="position: relative" >
    
      <parttitlestyle font-size="14" font-names="Verdana" />
    
      <zonetemplate>
    
      </zonetemplate>
    
    </asp:webpartzone>
    
    
    두 번째 구역의 표지는 이렇게 보여야 한다.
    
    
    <asp:webpartzone id="WebPartZone2" runat="server" 
    
      style="position: relative" >
    
      <zonetemplate>
    
      </zonetemplate>
    
    </asp:webpartzone>
    
    
  • 첫 번째 영역의 태그 사이에 사용자 정의된 WebPart 데이터 귀속 컨트롤을 표시합니다. 아래 코드 실례와 같습니다.태그는 Register 명령에서 컨트롤에 정의된 태그 접두사와 사용자 정의 컨트롤의 클래스 이름을 사용합니다.또한 컨트롤의 사용자 정의 속성에 정의된 ConnectionString은 매개 변수로 나타나며, 이 매개 변수의 값은 Web로 할당됩니다.config 파일의 데이터베이스 연결 문자열입니다.이 방법은 페이지 개발자가 컨트롤에 사용할 연결 문자열을 결정할 수 있도록 합니다.표시는 이렇게 보여야 한다.
    
    
    <aspSample:SmallGridWebPart id="grid1" runat="server" 
    
      title="Customer Phone List" width="300" 
    
      connectionstring="<%$ ConnectionStrings:nwind %>"   />
    
    
  • 비교의 목적으로 두 번째 영역의 표시줄 사이에 일반적인 달력 서버 컨트롤을 표시합니다.WebPartZone 컨트롤에 컨트롤을 두기 때문에 실행할 때 정상적인 WebPart 컨트롤처럼 작동합니다.웹 부품 응용 프로그램에서 서버 컨트롤 사용에 대한 자세한 내용은 [웹 부품 응용 프로그램에서 ASP 사용]을 참조하십시오.NET 서버 컨트롤].표시는 아래 코드처럼 보일 것입니다.
    
    
    <asp:calendar id="Calendar1" runat="server" 
    
      style="position: relative"></asp:calendar>
    
    
  • 페이지를 저장하고 닫습니다.이제 웹 페이지를 실행하고 사용자 정의 웹 파트 컨트롤을 테스트할 수 있습니다.페이지의 전체 코드는 다음 코드의 실례처럼 보일 것입니다.
    
    
    <%@ Page Language="C#" %>
    
    <!--                。 -->
    
    <%@ register src="displaymodecs.ascx" tagname="displaymodecs" 
    
        tagprefix="uc1" %>
    
    <!--         WebPart        。         assembly   ,               。           App_Code     。 -->
    
    <%@ register tagprefix="aspSample" 
    
        namespace="Samples.AspNet.CS.Controls" %>
    
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    
    <head runat="server">
    
        <title>Untitled Page</title>
    
    </head>
    
    <body>
    
        <form id="form1" runat="server">
    
        <div>
    
          <asp:webpartmanager id="WebPartManager1" runat="server">
    
          </asp:webpartmanager>
    
          <uc1:displaymodecs id="Displaymodecs1" runat="server" />
    
          <br />
    
          <table style="width: 80%; position: relative">
    
            <tr valign="top">
    
              <td style="width: 40%">
    
                <asp:webpartzone id="WebPartZone1" runat="server" 
    
                  style="position: relative" >
    
                  <parttitlestyle font-size="14" font-names="Verdana, Arial" />
    
                  <zonetemplate>
    
                    <aspSample:SmallGridWebPart id="grid1" runat="server" 
    
                      title="Customer Phone List" width="300" 
    
                      connectionstring="<%$ ConnectionStrings:nwind %>"  
    
                      />
    
                  </zonetemplate>
    
                </asp:webpartzone>
    
              </td>
    
              <td style="width: 40%">
    
                <asp:webpartzone id="WebPartZone2" runat="server" 
    
                  style="position: relative">
    
                  <zonetemplate>
    
                    <asp:calendar id="Calendar1" runat="server" 
    
                      style="position: relative"></asp:calendar>
    
                  </zonetemplate>
    
                </asp:webpartzone>
    
              </td>
    
            </tr>
    
          </table>
    
        </div>
    
        </form>
    
    </body>
    
    </html>
    
    
  • 좋은 웹페이지 즐겨찾기