[ASP.Net2.0] 웹사이트에 ASP.NET AJAX 사용할 수 있게 설정

View Comments

※ 웹사이트에 ASP.NET AJAX 사용할 수 있게 설정

웹사이트에 AJAX를 사용가능하게 설정하는 데에는 Visual Studio의 버전에 따라 달라진다.

일단 Visual Studio 2008 버전에서는 AJAX를 사용할 수 있게

그림에서 보는 것처럼 템플릿이 추가되어 있다.

사용자 삽입 이미지

AJAX1.0-Enabled ASP.NET 2.0 Web Site라고 템플릿이 추가되어있다.



AJAX1.0-Enabled ASP.NET 2.0 Web Site 템플릿으로 웹사이트 프로젝트를 생성하면

따로 설정을 해줄 필요없이 AJAX 기능을 사용할 수가 있다.

저 템플릿은 ASP.NET Extensions 1.0 버전이고 .NET Framework 2.0 버전에서 사용된다.

현재는 AJAX Library가 3.5버전까지 나와있고 .NET Framework 3.5버전에서 사용 가능하다.

라이브러리 다운로드는

http://www.asp.net/ajax/downloads/ 에서 다운로드가 가능하고 다른 내용도 살펴볼 수 있다.

이렇게 2008 버전에는 별다른 설정없이 바로 사용이 가능해서 편리하게 사용이 가능하다.

Visual Studio 2005 버전에서 AJAX 기능을 사용하기 위해서는 위 사이트에서

ASP.NET Extensions 1.0을 다운받아 설치를 하면 프로젝트 만들기에 해당 템플릿을 선택이 가능하다.

설치가 안되어있으면 2005버전에서는 템플릿을 선택을 할 수가 없다.

그리고 도구상자에서 AJAX와 관련된 컨트롤을 사용하기 위해서는

첨부파일의 ASP.NET AJAX Control Toolkit을 다운받아서 설치를 하면

도구상자에 AJAX 관련 컨트롤들이 추가되어 사용이 가능하다.



각 컨트롤에 대한 샘플은 다음 사이트에서 확인 가능하니 적용하기 전 확인 후 적용하면 된다.

ASP.NET AJAX Control Toolkit 샘플 페이지 보러 가기


그런데
AJAX1.0-Enabled ASP.NET 2.0 Web Site 템플릿이 아닌

일반 웹사이트로 이미 웹사이트를 만든 경우에는 web.config의 설정을 직접 수정을 해주어야 한다.

web.config의 설정 수정 내역은

여기를 눌러서 확인하여 프로젝트에 맞게 수정하면 된다.


ASP.NET Extensions의 버전이 변경되면 그에 맞게 web.config의 설정 내 관련 설정 부분의 버전도

같이 변경을 해주어야 버전 변경에 따른 오류 사항을 막을 수 있다.

그리고 AJAX 기능을 사용하기 위해 또 하나 추가해줘야할 부분은

AJAX 기능을 사용할려는 페이지에 다음 코드를 필수적으로 추가해줘야 원하는 기능을 사용할 수 있다.

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

위 코드는 반드시 FORM 태그 내에 존재해야 한다.

* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다. 


댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView에서 사용하는 이벤트들 정리

View Comments

※ GridView에서 주로 사용하는 이벤트들 정리 - 각 제목 클릭하면 상세 화면 보기 가능

1. GridView에 페이징 처리하기



2. GridView에 정렬 속성 추가하기

 

3. GridView에 편집/삭제 기능 추가하기


4. GetDataSet 함수 정의


* 이 포스트는 blogkorea [블코채널 : 프로그램에 대한 개발팁 및 유용한 정보 공유합시다.] 에 링크 되어있습니다.



16 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView를 Excel 출력하기

View Comments

* GridView 데이터를 Excel로 출력하기


   // 엑셀 출력 버튼

    protected void imgBtnExcel_Click(object sender, ImageClickEventArgs e)
    {
        DataSet ds = GetData();
        Boolean check = false;

        if (ds.Tables.Count != 0)
        {
            if (ds.Tables[0].Rows.Count != 0)
            {
                check = true;
                DataView dv = new DataView(ds.Tables[0]);
                SaveDataView2Excel(dv);
            }
            else
            {
                check = false;
            }
        }

        if (!check)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            sb.Append("<script type='text/javascript'>alert('검색된 결과가 없습니다.'); </script>");

            this.ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
        }
    }


    // 엑셀 출력 함수
    public void SaveDataView2Excel(DataView view)
    {
        DataTable table = new DataTable();
        table = view.Table.Copy();

        string strStyle = @"<style>td { mso-number-format:\@; } </style>";
        string fileName = "OrderForITEM_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
        fileName = HttpUtility.UrlEncode(fileName, new System.Text.UTF8Encoding()).Replace("+", "%20");

        #region html테이블 생성
        string htmlStr = "<div><table class='cell_bg' cellspacing='0' rules='all' border='1' id='ctl00_ContentPlaceHolder_GridView1' style='width:1000px;border-collapse:collapse;'>";
        htmlStr += "<tr align='center' valign='middle' style='background-color:#E9EEEA;height:30px;'>";
        for (int i = 0; i < table.Columns.Count; i++)
        {
            htmlStr += "<th scope='col'>" + table.Columns[i].ToString() + "</th>";
        }

        for (int j = 0; j < table.Rows.Count; j++)
        {
            htmlStr += "</tr><tr align='center' valign='middle' style='color:Black;height:30px;'>";
            for (int i = 0; i < table.Columns.Count; i++)
            {
                htmlStr += "<td>" + table.Rows[j][i].ToString() + "</td>";
            }
            htmlStr += @"</tr>";
        }
        htmlStr += @"</table></div><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>";
        #endregion

        Response.ClearHeaders();

        Response.AddHeader("content-disposition", "attachment;filename=\"" + fileName + "\"");

        Response.Charset = "";
        Response.ContentType = "application/vnd.xls";
        Response.Write(strStyle);
        Response.Write(htmlStr);
        Response.End();

    }



댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView 웹 서버 컨트롤에 바인딩된 행에 대한 대량 업데이트 수행

View Comments

참고 사이트 : http://msdn.microsoft.com/ko-kr/library/aa992036(VS.80).aspx

GridView에서 다수 데이터가 수정된 사항에서 한꺼번에 업데이트를 하기 위한 작업.
이것도 이번 프로젝트 작업에서 필요한 거라 정리한다.

1. 사전작업으로 GridView 바인딩을 하면서 원래 데이터 보관 - ViewState 사용
private bool tableCopied = false;
private DataTable originalDataTable;

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
if (!tableCopied)
{
originalDataTable = ((DataRowView)e.Row.DataItem).Row.Table.Copy();
ViewState["originalValuesDataTable"] = originalDataTable;
tableCopied = true;
}
}

2. 버튼 클릭시 저장하기 위한 작업

protected void UpdateButton_Click(object sender, EventArgs e)
{
originalDataTable = (DataTable)ViewState["originalValuesDataTable"];

foreach (GridViewRow r in GridView1.Rows)
if (IsRowModified(r)) { GridView1.UpdateRow(r.RowIndex, false); }

// Rebind the Grid to repopulate the original values table.
tableCopied = false;
GridView1.DataBind();
}

protected bool IsRowModified(GridViewRow r)
{
int currentID;
string currentTitleOfCourtesy;
string currentLastName;
string currentFirstName;
string currentTitle;
string currentExtension;

currentID = Convert.ToInt32(GridView1.DataKeys[0].Value);

currentTitleOfCourtesy = ((TextBox)r.FindControl("TitleOfCourtesyTextBox")).Text;
currentLastName = ((TextBox)r.FindControl("LastNameTextBox")).Text;
currentFirstName = ((TextBox)r.FindControl("FirstNameTextBox")).Text;
currentTitle = ((TextBox)r.FindControl("TitleTextBox")).Text;
currentExtension = ((TextBox)r.FindControl("ExtensionTextBox")).Text;

DataRow row =
originalDataTable.Select(String.Format("EmployeeID = {0}", currentID))[0];

if (!currentTitleOfCourtesy.Equals(row["TitleOfCourtesy"].ToString())) { return true; }
if (!currentLastName.Equals(row["LastName"].ToString())) { return true; }
if (!currentFirstName.Equals(row["FirstName"].ToString())) { return true; }
if (!currentTitle.Equals(row["Title"].ToString())) { return true; }
if (!currentExtension.Equals(row["Extension"].ToString())) { return true; }

return false;
}

--> 버튼 클릭하였을 때 현재 변경된 부분을 보관해둔 ViewState의 값과 비교하여 다른 부분만 GridView를 업데이트 처리
음...근데 대충 정리를 하다보니 이것도 내가 원하는 방식이 아니네
일단 이건 SqlDataSource를 사용하고 GridView 설정을 하면서 Update 쿼리문을 지정을 해주어야 한다.
지금 프로젝트에서는 일반 업데이트 쿼리가 아니라 저장 프로시져를 사용하는 거라
조금 다르게 작업을 해야겠네....일단 이런 방법으로 하는 거라 생각만 해두고
작업이 완료되면 다시 따로 정리할 예정.

댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView 행 추가하기

View Comments

* GridView 수동 행 추가

GridView에서 특정 버튼을 눌러서 행추가를 할려고 근 1주일넘게 삽질을 하다가 하나의 꼼수를 생각해냈다 --;;
여기저기 자료를 찾아보니
SqlDataSource를 사용하면 insert() 함수로 간단히 추가가 가능한 거 같은데
살펴보니 내가 원하는 방식은 아니다.
내가 원하는 방식은 따로 버튼을 두어 해당 버튼이 클릭이 되면 행이 추가가 되도록 하고 싶었는데
머리가 둔한건지 근 1주일 넘게 삽질하다 생각해낸게 아래 소스 방식이다 ㅡ,.ㅡ

하아~ 벌써 끝날 프로젝트인데 종료가 안된 상황에서 다른 프로젝트 투입되느라 작업시간도 없거니와
ASP.Net은 이번에 처음 만지는거라 작업시간이 오래 걸리네 (원래 난 JSP, JAVA만 쭈욱 해왔다;;)

1. 행추가 꼼수를 위해 aspx 소스 아무 위치에 HiddenField를 다음과 같이 하나 둔다.

   <asp:HiddenField ID="rowcnt" runat="server" Value="0" />

2. aspx.cs 파일에 버튼 클릭 이벤트 함수에 다음과 같이 작업

    protected void imgBtnInsRow_Click(object sender, ImageClickEventArgs e)
    {
        int curRowCnt =             
               int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);

        curRowCnt = curRowCnt + 1;

        ((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value = curRowCnt.ToString();

        insertRow();
    }

3. insertRow() 함수

   private void insertRow()
    {
        int curRowCnt =
             int.Parse(((HiddenField)Master.FindControl("MainContent").FindControl("rowcnt")).Value);

        // Create a DataTable
        DataTable table = new DataTable();

        // Create a DataColumn and set various properties
        DataColumn column1 = new DataColumn();
        column1.DataType = Type.GetType("System.String");
        column1.AllowDBNull = true;
        column1.Caption = "ITEM";
        column1.ColumnName = "ITEM";

        // Add the column to the table
        table.Columns.Add(column1);

        for (int i = 1; i <= 12; i++)
        {
            DataColumn column2 = new DataColumn();
            column2.DataType = Type.GetType("System.Decimal");
            column2.AllowDBNull = true;
            column2.Caption = i.ToString();
            column2.ColumnName = i.ToString();

            table.Columns.Add(column2);
        }

        // Add Row and set values
        DataRow row;
        for (int i = 0; i < curRowCnt; i++)
        {
            row = table.NewRow();
            row["ITEM"] = "";

            for (int j = 1; j <= 12; j++)
            {

                row[j] = 0;
            }

            // Be sure to add the new row to the
            // DataRowCollection.
            table.Rows.Add(row);
        }

        DataSet ds = new DataSet();
        ds.Tables.Add(table);

        gridDetail.DataSource = ds;
        gridDetail.DataBind();
    }

--> 위 소스에 대해서 간략하게 설명을 하면 행추가 버튼을 클릭을 하면 HiddenField인 rowcnt를 1씩 증가시키고 그 값을 insertRow() 함수 빨간색 부분 첫번째 for문에서 사용한다.
행추가 버튼을 눌러 증가된 rowcnt만큼 반복하면서 행을 하나씩 추가한다.

아무리 생각해도 허접한 삽질소스이지만 일단 원하는 행추가는 되니까 뭐 일단은 이렇게라도 쓰자;;


댓글0 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

[ASP.Net2.0] GridView RowSpan 적용예제

View Comments

* GridView에 RowSpan 적용 예제

1. GridView에 RowSpan을 하기 위해서 aspx 소스상에서 GridView의 OnRowDataBound 이벤트를 선언해준다.
<asp:GridView id="grdResult" onRowDataBound="grdResult_RowDataBound"></asp:GridView>
2. aspx.cs 소스상에서 grdResult_RowDataBound 함수를 선언 후 RosSpan을 수행하는 함수 호출
   protected void grdResult_RowDataBound(object sender, GridViewRowEventArgs e)
   {
        RowSpanGridView(grdResult, 0);
RowSpanGridView(grdResult, 1);
}
   // 1번째 인자는 GridView 객체, 2번째 인자는 RosSpan할 칼럼의 인덱스(인덱스는 0부터 시작) public void RowSpanGridView(GridView gd, int c_index)    {         int rowSpan = 1;         string ls_tmp0;         string ls_tmp1;         for(int i = 0; i < gd.Rows.Count; i++)         {             if(i == (gd.Rows.Count; i++)             {                  gd.Rows[i-rowSpan+1].Cells[c_index].RowSpan = rowSpan;             }             else             {                  ls_tmp0 = gd.Rows[i].Cells[c_index].Text;                  ls_tmp1 = gd.Rows[i+1].Cells[c_index].Text;                                   if(ls_tmp0 == ls_tmp1)                  {                       rowSpan++;                       gd.Rows[i+1].Cells[c_index].Visible = false;                  }                  else                  {                       gd.Rows[i-rosSpan+1].Cells[c_index].RowSpan = rowSpan;                       rowSpan + 1;                  }             }         }    }

4 Comments (+add yours?)

트랙백0 Tracbacks (+view to the desc.)

Newer Entries Older Entries