'asp.net'에 해당되는 글 18건

  1. 2010.08.13 ASP.NET PostBack
  2. 2010.08.03 ASP.NET 웹 페이지간 값 전달 (3)
  3. 2010.07.19 ASP.NET alert 후 redirection (2)
  4. 2010.07.19 ASP.NET DataGrid의 컬럼 너비 고정 시키기
2010.08.13 18:23

ASP.NET PostBack

ASP.NET을 하려면 이 개념을 모르고 지나가면 안되서 먼저 적어볼까 합니다.
포스트백이란 default.aspx란 페이지가 웹 서버에게 다시 default.aspx란 페이지를 요청하는 프로세스입니다.
(asp.net은 디폴트 메인 페이지의 이름이 default.aspx입니다)
웹 프로그래밍을 한번이라도 해보셨다면 바로 이해를 할 거 같은데요^^
한 페이지에서 다른 페이지로 이동을 하는것이 아니라 submit 같은 버튼을 통해 다시 자신에 페이지가 새로고침이 일어나는 현상을 말합니다.

예제를 만들어 보도록 하겠습니다^^

다음 코드를 보게 되면 Page가 로딩되면서 일어나는 이벤트의 핸들러인 Page_Load가 보일 것입니다.
Button1_Click이라는 이벤트핸들러도 보이죠.
대략적으로 텍스트박스에 문자열을 초기화하고!! Button1이 눌리면 포스트백이 일어나면서 텍스트박스에 사용자가 입력한 값이 브라우져에 출력되는 예제입니다.

결과를 보겠습니다.


"수정한 문자열" 이란 글씨를 썻는데 다시 초기화된 문자열이 출력됩니다.
이유를 생각해본즉.. 포스트백이 일어나면서 Page_Load가 다시 호출되면서 다시 초기화가 됐기 때문입니다.


# Page.IsPostBack : 포스트백이 일어난 것인지 판단하는 속성.
위에 코드를 보면 알수 있을것입니다. 포스트백이 아닐 경우에만 텍스트박스의 내용을 초기화 하고있습니다.
실제로 한번만 초기화해야 하는 코드는 Page.IsPostBack 블럭안에 코딩이 이뤄줘야 합니다^^

결과입니다.



[출처] [ASP.NET] 다시게시(PostBack)
Trackback 0 Comment 0
2010.08.03 13:02

ASP.NET 웹 페이지간 값 전달

ASP.NET에서 웹 페이지간에 값을 전달할 수 있는 방법은 5개 정도가 있다.

다른 웹 어플리케이션 또는 ASP.NET 웹페이지가 아닐때

- 쿼리 문자열(QueryString)
- HTTP POST 정보(HTTP POST Information)

동일한 ASP.NET 웹 어플리케이션에서만 가능

- 세션(Session State)
- 공용 속성값(Public Property Value)
- 컨트롤 정보(Control Information)


1) 쿼리 문자열(Using a Query String)
쿼리 문자열은 호출하는 웹 페이지의 URL에 키-값을 연결해서 전달하는 형태이다. 가장 쉬운 방법이지만 값이 URL에 보여지기 때문에 주의가 필요하다
1)소스 페이지에서 값 전달
URL의 끝에 ?와 &를 이용해 값을 전달
http://contoso.com/products.aspx?field1=value1&field2=value2

2)대상 페이지에서 값 받기
HttpRequest 객체의 QueryString property를 이용해 접근
string s = Request.QueryString["field1"];

2)POST 정보(Getting Post Information from the Source Page)
1)소스 페이지에서 값 전달
HTML 요소나 ASP.NET 서버 컨트롤을 포함하는 폼(form)요소에서 값을 전달

2)대상 페이지에서 값 받기
Form collection을 이용해서 값 읽기
void Page_Load(object sender, EventArgs e)
{
    System.Collections.Specialized.NameValueCollection postedValues = Request.Form;
    string nextKey;
    for(int i = 0; i < postedValues.AllKeys.Length; i++)
    {
        nextKey = postedValues.AllKeys[i];
        string value = postedValues[i];
        }
    }
}


3)세션(Using Session State)
1)소스 페이지에서 세션 상태에 키를 이용해 값을 저장
Session["field1"] = "value1";

2)대상 페이지에서 세션 상태로부터 값을 읽음
string field1 = (string)(Session["field1"]);

4)공용 속성 값(Getting Public Property Values from the Source Page)
1) 소스페이지에서 공용 속성을 작성
public string CurrentCity
{
    get
    {
        return textCity.Text;
    }
}


2)대상 페이지에서 소스페이지를 가르키는 @PreviousPageType 지시문 추가
<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %>

3)대상 페이지에서 PreviousPage 객체의 property를 읽음
string currentCity = PreviousPage.CurrentCity;

5)컨트롤 정보(Getting Control Information from the Source Page in the Same Application)
대상 페이지에서 PreviousPage 속성을 이용해 참조를 가져와서 FindControl 메소드를 호출해 참조를 가져옴
if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = (TextBox)Page.PreviousPage.FindControl("TextBox1");

    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}


[참조] How to: Pass Values Between ASP.NET Web Pages
           방법: ASP.NET 웹 페이지 간에 값 전달
           Ways to Pass Data Between Webforms!
Trackback 0 Comment 3
2010.07.19 10:42

ASP.NET alert 후 redirection

일반적으로 alert 메시지를 보여주고 redirection을 하기 위해서는
<script language=javascript>alert('alert_message');href='link_page.xxx'</script>를 사용한다.

하지만 유독 ASP.NET에서는 스크립트가 먹지 않는다. 해결책은

<script>alert('alert_message');window.location.href='link_page.xxx';</script>

window.location만 붙여줬을뿐인데 잘먹는다 -_-;;
Trackback 0 Comment 2
2010.07.19 10:06

ASP.NET DataGrid의 컬럼 너비 고정 시키기

ASP.NET의 DataGrid를 사용하다보면 컬럼의 너비를 고정시켜야 할때가 있다.
ItemStyle의 Width 속성을 이용해 컬럼의 너비를 지정할 수 있다. 하지만 단점이 있으니 DataGrid에 데이터가 있을때만 동작을 한다는 것!!

이를 해결하는 방법으로 HeaderStyle-Width을 이용하면 된다.

<asp:BoundColumn DataField="data_field" HeaderText="header_text"
       HeaderStyle-Width="100px">
<....>
</asp:BoundColumn>
Trackback 0 Comment 0