블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
01.C#기초 (4)
02.C#고급 (13)
03.ASP.NET (28)
04.HTML&Script (17)
05.Silverlight (38)
06.C 언어 기초 (2)
07.iOS (14)
08.Java (5)
09.SQL (8)
10.컴퓨터보안 (10)
11.패턴이야기 (3)
12.유니티3D (1)
13.Ubuntu (7)
14.Node.js (6)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



ㅁ UpdatePanel 안에서 파일 업로드 시켜보기...


UpdatePanel 안에서는 FileUpload Control이 사용이 안됩니다. 그런데도 불고하고 꼭 하고 싶어서.. 예전에 iframe를 이용해서 처리했습니다.
즉, FileUpload Control이 있는 페이지를 하나 따로 만드는 것입니다. 그래서 iframe를 통해서
접근해서 파일을 업로드하는 것이지요~^^

아래는 살짝쿵 만들어 본 소스코드 입니다.

먼저 프로젝트 어떤 페이지들이 있는지 그림들 통해 보도록 하겠습니다.

1. 그림

 

사용자 삽입 이미지


Default.aspx : UpdatePanel로 감싸져 있는 페이지입니다.

FileUp.aspx : FileUpload Control이 있는 페이지입니다.

User_FileUpload.ascx : UserControl 이며, TextBox 와 Button 으로 이루어져 있습니다.


여기에 UserControl이 왜 있을까 하시는 분들을 위해 잠깐 설명하겠습니다. 구지 UserControl를
않만드셔도 상관 없습니다. 이 예제는 전에 어떤분이 UserControl안에 FileUpload 컨트롤을 넣어서 처리할수 있는 방법이 없느냐는 질문에 한번 만들어 본 것입니다. 그래서 구지 UserControl를
사용하지 않으셔도 상관없음을 알려드립니다~^^;;;
오호~그럼 이제 코드가 어떤식으로 짜여져 있는지 보도록 하겠습니다.
일단 Default 페이지부터 보도록 하지요~

////////////////////////////////////////////////////////////////////////////////////////////////

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<%@ Register Src="User_FileUpload.ascx" TagName="User_FileUpload" TagPrefix="uc1" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title>Untitled Page</title>

    <script type="text/javascript">

        function btn01_Click()

        {

            var FileUP = document.getElementById("iframe01").contentWindow.document.getElementById("FilleUpload01");

            FileUP.click();

            var FName = FileUP.value;

            document.getElementById("txtFileName").value = FName;

        }

    </script>

</head>

<body>

    <form id="form1" runat="server">

        <asp:ScriptManager ID="ScriptManager1" runat="server" />

        <asp:UpdatePanel ID="UPDatePanel01" runat="server">

            <ContentTemplate>

                <div id="div_body" style="text-align:center">여기는 Body 입니다.</div>

                <br />

                <uc1:User_FileUpload ID="User_FileUpload1" runat="server" />

                <iframe id="iframe01" src="FileUp.aspx" style="visibility:hidden; height:0px;"></iframe>

                <div id="div1" style="text-align:center">여기는 Body 입니다.</div>

                <br />

            </ContentTemplate>

        </asp:UpdatePanel>

    </form>

</body>

</html>

//////////////////////////////////////////////////////////////////////////////////////////

 비하인드 코드는 각각 하고자 하시는 대로 마음대로 짜시면 될 것 같습니다. 저는 그냥 참고식으
로 만든 예제라 비하인드 코드는 넣지 않았습니다...^^;;
위 코드를 보시면 아주 단순합니다. 그냥 현재 페이지가 Body 부분임을 알리는 글자와
UserControl , 그리고 IFrame 만 있습니다. 물론 IFrame은 Style를 이용해서 안보이게 해주어야
겠지요~^^ 또 제일 위에 Script 코드가 있네요~ 위 Script 코드는 UserControl 에 클릭이벤트를
정의한 겁니다. Script도 간단합니다. 그냥 iframe을 통해서 FileUpload Control에 접급한 것입니
다. 그리고 나서 클릭이벤트를 주고는 그 컨트롤의 value값 즉 사용자가 선택한 파일경로를 가
지오 와서 UserControl에 만들었던 TextBox에 넣어 주는 것입니다.

아래는 UserControl 코드 입니다.

//////////////////////////////////////////////////////////////////////////////////////////

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="User_FileUpload.ascx.cs" Inherits="User_FileUpload" %>

<div id="User_Control" style="text-align:left">여기는 유져 컨트롤 입니다.</div>

<input type="text" id="txtFileName" /><input type="button" id="btn01" value="파일찾기" onclick="btn01_Click()" />

//////////////////////////////////////////////////////////////////////////////////////////


아주 심플 합니다.ㅋ

그럼 이제 FileUpload 컨트롤이 들어 있는 페이지의 소스를 보도록 하겠습니다.

//////////////////////////////////////////////////////////////////////////////////////////

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FileUp.aspx.cs" Inherits="FileUp" %>

 

<!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>제목 없음</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:FileUpload ID="FilleUpload01" runat="server" />

    </div>

    </form>

</body>

</html> 

//////////////////////////////////////////////////////////////////////////////////////////

여기도 별거 없네요...말그대로 FileUpload 컨트롤만 있습니다.
너무 샘플해서 설명하기가 부끄럽네요~ㅋ
아래 그림은 실행화면 입니다.

2.그림 (전체 모습)

사용자 삽입 이미지


3.그림(파일찾기 버튼클릭 모습)

사용자 삽입 이미지



4. 그림 (파일을 선택하고 TextBox에 경로가 들어가 모습)

사용자 삽입 이미지


이제 제가 설명한 부분이 대충 감이 오셨으리라 생각이 됩니다. 그럼 비하인드 코드에서 코드를
어떻게 짜야할지도 감이 오시겠군요~^^
이런 방법이 도움이 될지 모르겠습니다~
혹시나 해서 제가 만들 예제 파일도 올리도록 하겠습니다. ^^

Posted by happydong
, |



ㅁ ASP.NET 2.0 Page클래스의 속성

공유 속성
속성 설명
AppRelativeVirtualPath 응용 프로그램과 관련된 페이지의 상대 경로(예: ~/default.aspx)
ClientQueryString 요청 Url에서 쿼리 문자열 부분(예: parm1=abc)
ClientScript 클라이언트 스크립트를 관리하는 ClientScriptManager 개체를 반환한다. ClientScriptManager 개체는 클라이언트와 서버가 교신하는데 필요한 스크립트를 관리하는 다양한 메서드를 제공한다.
CodePage (@ Page 지시자의 CodePage와 같다.(예: 65001)[닷프 전용])
ContentType (@ Page 지시자의 ContentType과 같다.(예 : text/html)[닷프전용])
Culture (@ Page 지시자의 Culture와 같다.(예 : Korea(Korea))[닷프전용]
EnableTheming 테마를 사용할지 여부
Form 페이지의 <form runat="server">태그(HtmlForm 개체)
Header 페이지의 <head runat="server">태그를 나타낸다.HtmlHead 형식을 반환한다.
IdSeparator 컨트롤의 UniqueID에 사용되는 문자, 이 속성의 값은 "$"이다. 읽기전용.
IsAsync 페이지가 비동기로 처리되는 중인지 여부
IsCallback 페이지 요청이 콜백 함수의 결과로 인한 것인지 여부
IsCrossPagePostBack 페이지 요청이 다른 페이지로부터 포스트백된 것인지 여부
Items 페이지 개체의 수명만큼 지속될 필요가 있는 개체를 저장한다.여기에 저장한 개체는 자식컨트롤에서 액세스할 수 있다.
LCID (@ Page 지시자의 LCID와 같다.[닷프전용]
MaintainScrollPositionOnPostBack 포스트백되는 동안 스크롤 위치를 유지하는지 여부. @ Page 지시자의 MaintainScrollPositionOnPostBack 특성과 같다.
Master 마스터 페이지의 개체를 가져온다.
MasterPageFile 마스터 페이지 이름을 설정하거나 가져온다. Prelnit에서만 이 속성을 설정할 수 있다.
PageAdapter 페이지를 요청한 브라우저와 연결되어 페이지의 동작을 재정의하는 PageAdapter 개체를 반환한다.
PreviousPage 이 페이지로 제어를 옮긴 페이지를 가져온다. Transfer메서드나 교차 포스트백 시 이속성이 설정된다. 그 외에는 null이다.
ResponseEncoding (@ Page 지시자의 ResponseEncoding과 같다.(예 : Unicode(UTF8))[닷프전용]
StyleSheetTheme 스타일시트 테마 이름. @ Page 지시자의 StyleSheetTheme 특성을 통해 지정할 수 있다.
Theme 페이지 테마 이름. @ Page 지시자의 Theme 특성을 통해 지정할 수 있다.
Title 페이지의 제목. @ Page 지시자의 Title 특성을 통해 지정할 수 있다.
TraceModeValue (@ Page 지시자의 TraceMode와 같다.[닷프전용])
TraceEnabled 추적이 가능한지 여부. @ Page 지시자의 Trace와 같다.[닷프전용]
UICulture 페이지와 연결된 스레드의 UI 아이디(예 :Korea(Korea))[닷프전용]
ViewStateEncryptionMode 뷰 상태를 인코딩하는 방법을 결정한다. Auto | Always | Never


보호 속성
속성 설명
AspCompatMode (@ Page 지시자의 AspCompat와 같다.[닷프전용]
MaxPageStateFieldLength 클라이언트로 전송되는 뷰 상태 필드의 최대 길이를 지정한다. 이 속성에 양수를 지정하면, 이 수의 크기에 따라 클라이언트로 출력되는 뷰 상태 필드가 나눠어 진다. 음수로 지정되면 나눠어지지 않는다. 기본 값은 -1 이다.
PageStatePersister PageStatePersister 개체를 반환한다. 이 개체는 뷰 상태 저장 처리의 하부 구조를 제공하는데 PageStatePersister 개체를 확장하면 기본 뷰 상태의 저장 방식을 변경할 수 있다. PageStatePersister를 상속한 개체는 HiddenFieldPageStatePersister 개체와SessionPageStatePersister 개체가 있다. HiddenFieldPageStatePersister는 뷰 상태를 관리하도록 기본적으로 선택된 개체이다. SessionPageStatePersister 개체는 세션에 뷰 상태를 저장한다.
UniqueFilePathSuffix 파일을 캐시하기 위해 파일 경로의 마지막에 붙이는 유일한 접미사를 반환한다. 특정 요청과 연결된 파일 경로를 식별하는데 사용한다.

위 내용중 [닷프전용]은 개발자가 변경하지 말라는 주의가 있는 속성들이다.쓰기를 자제하고 읽기 위주로 사용하는 것이 좋다.


                                               참고 서적 : ASP.NET 2.0  웹 프로젝트와 실전 프로그래밍
Posted by happydong
, |



ASP.NET AJAX 프로젝트 만들기 준비 사항~!


여기서 다루어질 이야기는 제목과 같습니다. 즉 ASP.NET AJAX 컨트롤에 관심은 있는데 어떻게
어디서 부터 시작을 해야 할지 모르는 분들을 위해 간단하게 이야기 하도록 하겠습니다. 역시 개
발의 시작은 프로젝트를 생성에서 부터 겠지요~!^^

  VS2005 준비 사항 ★

 

 ASP.NET Extensions1.0 를 설치를 해야 합니다.

  - 다운로드 주소

 ASP.NET Ajax controlToolkit 참조해야 합니다.

  - 다운로드 주소

 

ASP.NET Extensions1.0.NET Framework 2.0 이상에서 지원이 된다고 합니다. 고로 Visual Studio2005 이상 버전에서 사용할 수 있겠지요~^^
AJAX Extensions1.0
설치한다면
Microsoft AJAX Library를 별도로 설치할 필요가 습니다.

이미 그 모듈도 포함하고 있기 때문이지요. Microsoft AJAX Library를 별도로 설치해야 하는 경우는

머신이 윈도우OS가 아니거나, .NET Framework가 지원되지 않아서 ASP.NET Extensions1.0을 설치

할 수 없는 경우에한 합니다. Microsoft AJAX Library는 비 Windows 환경을 위한 별도로 제공되는 스

크 립트라이브러리이기 때문입니다.

 

ASP.NET Extensions1.0를 다운로드 받아서 설치후 VisualStudio 2005를 실행하면 아래 화면과 같이

ASP.NET AJAX-Enabled Web Site 템플릿 프로젝트가 보일 것 입니다.

(VisualStudio 2005 실행 >> 파일 >> 새로만들기 >> 웹사이트)

 

1.그림

 

사용자 삽입 이미지
 

ASP.NET AJAX-Enabled Web Site를 선택하고 프로젝트명을 설정후 실행하면 이제 부터

ASP.NET AJAX Project 만들준비가 된 것 입니다.

다음은 VS2005AJAX Control Toolkit를 참조 하는 모습을 보도록 하겠습니다.

위 처럼 프로젝트를 실행했다면 솔루션탐색기에서 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하

면 아래와 같은 그림의 메뉴들이 나타납니다. 그 중에 참조 추가를 선택 합니다.

 

2. 그림


 

사용자 삽입 이미지

 

이제 AJAX Control Toolkit를 다운로드 받은 경로에서 AjaxControlToolkit.dll파일을 프로젝트에 추가

합니다.

 

3. 그림

사용자 삽입 이미지

 

~~ 이제 참조 추가까지 끝났습니다.. ..이제 AJAXControl들 추가하도록 하겠습니다.

 

4.그림


 

사용자 삽입 이미지

 

탭 추가를 하면 탭 이름을 지정 할 수 있습니다. 원하는 이름을 설정을 합니다. 저는 "AJAX Controls"

라고 했습니다.

 

5. 그림

사용자 삽입 이미지

 

 

위 그림과 같이 dll 파일을 텝에 드래그 하면 아래과 같이 AJAX Control들이 나타나게 됩니다.

 

6. 그림


 

사용자 삽입 이미지

 

자 이렇게 해서 VS2005에서의 ASP.NET AJAX 프로젝트를 완전하게 만들 준비가 된 것 같군요~^^

 

이제는 VS2008 ASP.NET AJAX 프로젝트를 어떻게 실행하는지 알아 보도록 하겠습니다.

 

  VS2008 준비 사항 ★

 

VS2008 VS2005의 상위 버전이므로 ASP.NET Extensions 따로 설치할 필요가 없습니다.

그냥 우리가 Web프로젝트를 실행시키면 기본적인 AJAX 컨트롤이 들어가 있는 것을 보실수

있을 것입니다.

 

7.그림


사용자 삽입 이미지
 

 

AJAX 컨틀롤을 추가하는 것은 위에서 본 내용과 동일한 방법을 통해서 추가 하면된다. 역시나

참조 추가 부분도 마찬가지이다.  AJAXControlToolkit3.5 가 나왔으니깐 다운로드 받아서 추가

하면 될 것이다.( AJAXControl 다운로드) 다운로드 주소는 위에서 링크 걸린 곳과 동일 하다.

이렇게 해서 VS2008 ASP.NET AJAX 프로젝트를 만들 준비가  된 것이다. 이제 부터 컨트롤을

하나씩 써보면서 여러가지로 만들어 보면 되는 것이다~^^;;

 

<Tip>

혹시 VS2008 ASP.NET AJAX Project를 실행하는 도중에 아래와 같은 에러가 나타나면

web.config파일에서 아래 코드를 지워버리세요~!

 

8.그림

사용자 삽입 이미지

 

 

///////////////////////////////////////////////////////////////////////////////////////

<add assembly="System.Data.DataSetExtensions, Version=2.0.0.0, Culture=neutral,

PublicKeyToken=B77A5C561934E089"/>

///////////////////////////////////////////////////////////////////////////////////////

 

 

Posted by happydong
, |