갑자기 추워졌다.. 물론 오늘부터 추워질거라 기상청의 예보가 있었지만..
동해안에는 평년에 비해 40일정도 일찍 첫눈이 왔다니.. ㅎ 좋겠다..

지난번 포스트에 이어서 이번에는 Cell Color를 설정해 보자.


/* Set Cell Font */

private void SetCellFont(object cell1, object cell2, bool bold, int fontSize, int colorIndex)

{

    oRange = oWorkSheet.get_Range(cell1, cell2);

    oRange.Font.Bold = bold;

    oRange.Font.Size = fontSize;

    oRange.Interior.ColorIndex = colorIndex;

    oRange.EntireColumn.AutoFit();

}


지정된 셀범위에 폰트와 셀컬러를 설정한다.
지난번 설정과 전후설정은 같고, 위와같이 메서드 부분만 설정하면 된다.
colorIndex 값은 int로  
http://msdn.microsoft.com/en-us/library/cc296089.aspx  여기서 확인하자.
대부분 필요한것이 Font 속성에 있는데.. 이놈의 셀컬러만 Interior 속성에 있어서 한참 찾았다.

그럼.. 추운데 신종플루 조심하세요..





저작자 표시 비영리 변경 금지
신고
  1. 1 2010.04.14 20:48 신고

    1

오늘 Visual studio 10 beta를 설치하니, 닷넷프레임워크 4.0 이 설치되었다.

그런데 내 PC가 문제였는지 IIS웹사이트 설정할때 asp.net 런타임버전을  2.0 으로 선택할려니
안되는 거였다. 계속 4.0으로만 셋팅되고, iis를 지웠다 다시설치해도 소용없었다.
그래서 , 이문제를 해결하느니 시간도 없고 해서 닷넷프레임워크를 지울려고 검색해봤더니 의외로 지우는것을
간단했다. 런타임만 삭제한다. 해당폴더는 계속있고..

지우는 방법은
\windows\Microsoft.NET\Framework\버전
해당 버전폴더 아래로 가면 아래와 같은 실행파일 있다.

aspnet_regiis.exe -u
위 파일을 명령창에서 실행한다.

ASP.NET iis 등록툴이지만 위와 같이 -u 옵션을 주면 런타임이 삭제된다.
iis에서 확인해보면 해당 버전이 사라진것을 확인할 수 있다.

http://msdn.microsoft.com/ko-kr/library/k6h9cz8h.aspx

그럼 좋은 하루 되세요^^

저작자 표시 비영리 변경 금지
신고

'개발' 카테고리의 다른 글

MS DirectX SDK 오타!  (0) 2009.09.02
.NET Framework 삭제하기  (0) 2009.08.12
Enum type의 데이터를 굳이 바인딩할이 없어서 여태가지 아무 생각 없이 개발을 해 왔는데..
오늘 그렇게 할일이 생겨버렸네^^
그래서 찾다보니 간단히 바인딩이 되네~

Enum에게
GetValues 또는 GetNames를 통해서 Array로 데이터를 받을 수 있다.

<asp:DropDownList runat="server" ID="ddlEx" />

enum CITY

    {

        DO,

        SI,

        GU,

        GUN,

        MYEON,

        UEP,

        RI

    }

 

    protected void Page_Load(object sender, EventArgs e)

    {

        ddlEx.DataSource = System.Enum.GetValues(typeof(CITY));

        ddlEx.DataBind();

    }


요렇게














ㅋ ! 포스팅 할께 없다보니.. ㅜ.ㅜ

WBC 2라운드에서 일본을 4:1로 꺽고 4강에 진출했군요. ㅋㅋ
좋은 하루 되세요.

저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

라이언엑셀 죽이기  (0) 2009.10.09
Enum Type 데이터를 바인딩하기  (0) 2009.03.18
C# 간단 트레이닝 1  (0) 2008.10.17
asp.net paging source  (0) 2008.10.15

내가 사용하는 페이징클래스[C#]

일단, 소스부터 보자면..
[CPaging.cs]

using System;

using System.Text;

 

/// <summary>

/// auth. : ranos94@gmail.com

/// date  : 2007-12-01

/// desc. : 페이지 Navigation UI를 보여준다.

///   *퍼가실땐 출처를..*

/// copyright xwing.tistory.com

/// </summary>

public class CPaging : System.Web.UI.Page

{

    private int page;

    private int rowPerPage;

    private int totalRecord;

    private int totalPage;

    private int sPage;

    private int ePage;

    private string targetUrl = String.Empty;

    private string addParam = string.Empty;

 

    public PagingType pagingType;

 

    public enum PagingType

    {

        Numeric,

        PrevNext,

        BoxNumeric

    }

 

    public int PageNo

    {

        set { page = value; }

        get { return page;  }

    }

 

    public int RowPerPage

    {

        set { rowPerPage = value; }

        get { return rowPerPage; }

    }

 

    public int TotalRecord

    {

        set { totalRecord = value;}

        get { return totalPage; }

    }

 

    public int TotalPage

    {

        set { totalPage = value; }

        get { return totalPage; }

    }

 

    public string TargetURL

    {

        set { this.targetUrl = value; }

        get { return this.targetUrl; }

    }

 

    public string AddParam

    {

        set { this.addParam = value; }

        get { return this.addParam; }

    }

 

    public CPaging()

    {

        pagingType = PagingType.Numeric;

    }

 

    /// <summary>

    /// paging 에 필요한 변수를 설정하고, 페이지 렌더링함수를 호출한다.

    /// </summary>

    private void PagingInit()

    {

 

        if ((this.page % this.rowPerPage) == 0)

        {

            this.sPage = ((this.page / this.rowPerPage) * this.rowPerPage + 1) - this.rowPerPage;

            this.ePage = this.sPage + (this.rowPerPage - 1);

        }

        else

        {

            this.sPage = (this.page / this.rowPerPage) * this.rowPerPage + 1;

            this.ePage = this.sPage + (this.rowPerPage - 1);

        }

 

        if (this.ePage >= this.totalPage)

            this.ePage = this.totalPage;

    }

 

 

    /// <summary>

    /// Paging 을 그린다.

    /// </summary>

    public string RenderPaging()

    {

        PagingInit();

 

        switch (pagingType)

        {

            case PagingType.Numeric:

                return RenderNumeric();

 

            case PagingType.PrevNext:

                return RenderPrevNext();

 

            case PagingType.BoxNumeric:

                return RenderBoxNumeric();

 

            default:

                return RenderNumeric();

 

        }

 

    }

 

    /// <summary>

    /// 번호로 보여준다.

    /// </summary>

    /// <returns></returns>

    private string RenderNumeric()

    {

        StringBuilder sb = new StringBuilder();

        sb.Append("<table  border=0 align='center' cellpadding=0><tbody><tr>");

 

        if (this.sPage > this.rowPerPage)

        {

            int next10 = this.sPage - this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'><< 이전10개</a></td>");

        }

 

        for (int i = sPage; i <= ePage; i++)

        {

            if (this.page == i)

            {

                sb.Append("<td width=25 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\" style=\"color:red;font-weight:bold\" >");

                sb.Append(i.ToString() + "</td>");

            }

            else

            {

                sb.Append("<td width=25 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\" style=\"font-weight:bold\">");

                sb.Append("<a href='" + targetUrl + "?page=" + i.ToString() + "&" + AddParam + "'>" + i.ToString() + "</a></td>");

            }

        }

 

        if (this.totalPage > this.ePage)

        {

            int next10 = this.sPage + this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'>다음10개 >></a></td>");

        }

 

        sb.Append("</tr></tbody></table>");

 

        return sb.ToString();

    }

 

    /// <summary>

    /// Prev, Next 형식의 페이징을 만든다.

    /// </summary>

    /// <returns></returns>

    private string RenderPrevNext()

    {

        StringBuilder sb = new StringBuilder();

        sb.Append("<table  border=0 align='center' cellpadding=0><tbody><tr>");

 

        if (this.page > 1)

        {

            int prev = this.page - 1;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + prev.ToString() + "&" + AddParam + "'><img src='/images/board/icon_back.gif' border=0></a></td>");

        }

 

 

 

        if (this.totalPage > this.page)

        {

            int next = this.page + 1;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next.ToString() + "&" + AddParam + "'><img src='/images/board/icon_next.gif' border=0></a></td>");

        }

 

        sb.Append("</tr></tbody></table>");

 

        return sb.ToString();

    }

 

    /// <summary>

    /// 사각형 형태의 모양을 보여준다.

    /// </summary>

    /// <returns></returns>

    private string RenderBoxNumeric()

    {

        StringBuilder sb = new StringBuilder();

        sb.Append("<table align='center' cellpadding=0 style=\"border:0; border-collapse:collapse;\"><tbody><tr>");

 

        if (this.sPage > this.rowPerPage)

        {

            int next10 = this.sPage - this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'><< 이전10개</a></td>");

        }

 

        for (int i = sPage; i <= ePage; i++)

        {

            if (this.page == i)

            {

                sb.Append("<td width=25 align=\"center\"  style=\"color:red;background-color:#FFFFFF;border-color:#ACACEC;font-weight:bold;border:1px solid;\" >");

                sb.Append(i.ToString() + "</td>");

            }

            else

            {

                sb.Append("<td width=25 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\" style=\"font-weight:bold;border:0 solid;\" >");

                sb.Append("<a href='" + targetUrl + "?page=" + i.ToString() + "&" + AddParam + "'>" + i.ToString() + "</a></td>");

            }

        }

 

        if (this.totalPage > this.ePage)

        {

            int next10 = this.sPage + this.rowPerPage;

            sb.Append("<td width=80 align=\"center\" onMouseOver = \"onStyle(this)\" onMouseOut = \"offStyle(this)\">");

            sb.Append("<a href='" + targetUrl + "?page=" + next10.ToString() + "&" + AddParam + "'>다음10개 >></a></td>");

        }

 

        sb.Append("</tr></tbody></table>");

 

        return sb.ToString();

    }

}



그리고, 마우스오버에 필요한 Script

// JScript 파일
function onStyle(obj){
    obj.style.background = '#EFF2FE';
    obj.style.border='1px solid';
}

function offStyle(obj){
    obj.style.background = '#FFFFFF';
    obj.style.border = '0px';
}


실제 소스적용예를 보자!

CPaging paging = new CPaging();

paging.pagingType = CPaging.PagingType.PrevNext;

paging.TargetURL = "/board/dev/devInfo.aspx";

paging.PageNo = currentPage; //페이지번호

paging.RowPerPage = 10; //한페이지에 보여줄 row수

paging.AddParam = "p_type=" + p_type;

paging.TotalPage = Int32.Parse(param2.Value.ToString()); // 총 페이지수

paging.TotalRecord = Int32.Parse(param1.Value.ToString()); // 총 레코드수

 

string pageLayout = paging.RenderPaging();

PageLabel.Text = pageLayout;


이와 같이 사용한다.

오늘도 좋은 하루 되시길...
저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

C# 간단 트레이닝 1  (0) 2008.10.17
asp.net paging source  (0) 2008.10.15
ASP.NET 간단 팁들..  (0) 2008.10.09
웹 Bitmap 그리기  (0) 2008.10.08

간단 Tip

 1. Postback 을 통해 어떤 액션을 취했다면.. 이후 다시 리플레시를 하면
    똑같은 액션이 다시 실행된다.  만약에 DB Insert라면 똑같은 데이터가 중복으로 들어가겠지..
    다른 분들은 어떻게 막고 계실까?..
    난,

    Response.Redirect(Request.RawUrl)
    이렇게 처리를 하는데.. RawUrl은 처음 페이지를 호출했던 원시 URL을 가져온다.
   그러므로 페이지를 처음 호출했을때의 상태로 돌아가게 된다.

2. [HTML-Style 팁]
   - 인쇄시 또는 인쇄미리보기시 다음페이지로 페이지나누기
     page-break-after:always;
     block-level element에 위 속성을 추가하면 페이지가 나뉜다.
     예를들어 <div style='page-break-after:always;'>A</div>B 이렇게 하면   A와 B는 서로 다른페이지에
     인쇄된다.

     요거땜에 하루종일 뺑이.. ㅜ.ㅜ 
     엉뚱한데서 답을 찾을려 했으니..
   
3. 3자리수 마다 점찍기

    string.Format("{0:N0}",amount); // amount 는 숫자형

   

 4.Dictionary VS Hash Table

저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

asp.net paging source  (0) 2008.10.15
ASP.NET 간단 팁들..  (0) 2008.10.09
웹 Bitmap 그리기  (0) 2008.10.08
windows2008 Image thumbnail 표시  (0) 2008.09.05


이미지 그리기 샘플..
심심풀이로 그려봤다.

요런 막대그래프(?)가 생겨난다.



소스

using System;

using System.Collections.Generic;

using System.Web;

using System.Web.UI;

 

using System.Drawing;

using System.Drawing.Imaging;

 

public partial class testGraph : System.Web.UI.Page

{

    Bitmap b;

    Graphics g;

 

    protected void Page_Load(object sender, EventArgs e)

    {

        Graph();

    }

 

    private void Graph()

    {

        b = new Bitmap(500, 25);

        g = Graphics.FromImage(b);

 

        Brush txtBrush = new SolidBrush(Color.Yellow);

        Brush bkBrush = new SolidBrush(Color.Gray);

        Brush brush = new SolidBrush(Color.Blue);

 

        HttpContext.Current.Response.ContentType = "image/jpeg";

        g.FillRectangle(bkBrush, 0, 0, 500, 25);

        g.FillRectangle(brush, 0, 0, 180, 25);

        g.DrawString("달성률(36%)", new Font("arial", 9), new SolidBrush(Color.White), 1, 5);

        g.DrawString("전체건수(50건)", new Font("arial",8), txtBrush, 410, 5);

 

        b.Save(HttpContext.Current.Response.OutputStream, ImageFormat.Jpeg);

 

        g.Dispose();

        b.Dispose();

    }

}


간단하다^^  그래도 막상 필요할때 잘 생각 안난다.
그림 쳐바를일이 그리 많지 않지만.. 그래도 가끔 요런거 좋아라 하는 애들있다..

그럼 오늘도.. 막코딩을 위해^^

저작자 표시 비영리 변경 금지
신고

'개발 > C# / ASP.NET' 카테고리의 다른 글

ASP.NET 간단 팁들..  (0) 2008.10.09
웹 Bitmap 그리기  (0) 2008.10.08
windows2008 Image thumbnail 표시  (0) 2008.09.05
설치된 HotFix 조회하기  (0) 2008.08.28

안녕하세요~


지금부터 간단하게 ASP.NET에서 AJAX를 이용해서 간단한 더하기 계산을 하는 웹페이지를 샘플로 보여드리겠습니다.
이 페이지는 텍스트박스를 두개 만들어 두수를 입력받고 더한 값을 또 다른 텍스트박스에 표시하는 페이지입니다.
물론, AJAX를 이용해서..(아작스? 에이젝스? 아약스? 에이제이에이엑스? .. 거참 ! 편할때로..)


실행이미지

위와 같이 표시되지요 "=" 버튼을 누르면 AJAX를 이용하여 계산한 값을 리플레쉬없이 결과를 표시하고
아래 "UpdatePanel 밖에서 더하기" 버튼을 누르면 기존의 방식되로 포스트백하여 표시된다.

일단 VS를 실행하여 새 프로젝트를 생성한다.
AJAX를 사용하기 위해서는 UpdatePanel을 추가한다.
그리고, <ContentTemplate>안에 텍스트 박스를 3개를 추가한다. 그리고 UpdatePanel밖에도 버튼을 추가한다.

즉, 소스는 다음과 같다.


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

    2 

    3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    4 

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

    6 <head runat="server">

    7     <title>제목 없음</title>

    8 </head>

    9 <body>

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

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

   12     <div>

   13     <asp:updatepanel runat="server">

   14         <ContentTemplate>

   15             <asp:TextBox ID="nSu1" runat="server"></asp:TextBox>

   16             <asp:TextBox ID="nSu2" runat="server"></asp:TextBox>

   17             <asp:Button ID="result" runat="server" Text=" = " OnClick="result_Click" />

   18             <asp:TextBox ID="nSum" ReadOnly runat="server"></asp:TextBox>

   19         </ContentTemplate>

   20     </asp:updatepanel>

   21 

   22     <asp:Button ID="result2" runat="server" Text="UpdatePanel 밖에서 더하기" OnClick="result2_Click" />

   23     </div>

   24     </form>

   25 </body>

   26 </html>


그리고, 소스코드는 다음과 같다.

    1 using System;

    2 using System.Data;

    3 using System.Configuration;

    4 using System.Collections;

    5 using System.Web;

    6 using System.Web.Security;

    7 using System.Web.UI;

    8 using System.Web.UI.WebControls;

    9 using System.Web.UI.WebControls.WebParts;

   10 using System.Web.UI.HtmlControls;

   11 

   12 public partial class Default3 : System.Web.UI.Page

   13 {

   14     protected void Page_Load(object sender, EventArgs e)

   15     {

   16 

   17     }

   18 

   19     protected void result_Click(object sender, EventArgs e)

   20     {

   21         int sum = int.Parse(nSu1.Text.ToString()) + int.Parse(nSu2.Text.ToString());

   22 

   23         nSum.Text = sum.ToString();

   24     }

   25 

   26     protected void result2_Click(object sender, EventArgs e)

   27     {

   28         int sum = int.Parse(nSu1.Text.ToString()) + int.Parse(nSu2.Text.ToString());

   29 

   30         nSum.Text = sum.ToString();

   31     }

   32 }


위 소스를 모두 작성하고 Ctrl+F5 를 눌러 테스트해보자
두개의 숫자를 입력하고 "=" 는 눌러 계산할때와 UpdatePanel 밖에 있는 버튼을 누를때와 비교해보자

이상.. 좀 허접했나?..

암튼 기술의 발전을 따라가기가 힘들군요~
특히 웹은 너무 빠르게 변화하는거 같은... 참 밥빌어 먹기 힘들다는... 넉두리였습니다.
좋은 하루되세요.

신고

ROW_NUMBER() 를 이용하여 간단한 페이징 쿼리를 만들어 보자!

ROW_NUMBER() 를 SQL2005 설명을 빌리자면
 
* 결과 집합 파티션 내의 행 일련 번호를 반환합니다.

이렇게 설명할 수 있다.

자 ROW_NUMBER() 를 간단히 실행해 보자..
 SELECT  ROW_NUMER() OVER ( ORDER BY IDX DESC ) As rownum FROM  TABLE1
 위 SQL 구문은 TABLE1에서  IDX 를 역순으로 일렬번호를 리턴한다.

 rownum
 1
 2
 3
 4
 ..
 ..


이렇게 일렬번호를 리턴한다.

자~ 이제 row_number()의 기능을 알았으면.. 간단한 페이지 쿼리를 만들어 보자..
설명은 그 다음에..




 declare @page int
 declare @pageSize int
 set @pageSize = 10
 set @page = 1


 select top 10   t1.*  from (
   select  top (@pageSize * @page) row_number() over(order by b.idx desc) as rownum, *  from tb_table  a 
 ) as t1
 where rownum > (@page-1) * @pageSize



위 쿼리는 tb_table 의 idx 가 역순으로 정렬된 상태에서 첫번째 페이지 10개의 레코드를 보여준다.
두번째 페이지를 보고 싶다면..
  rownum 이 11 부터 10개가 보이면 되니까 ..  조건문
  where rownum > 10 이 되면 두번째 페이지가 보여진다.

간단하다.. 페이징쿼리가..

난 row_number()라는게 있다는 것을 이번 기회에 처음 주워들었다^^
왜 이제야 알았지..

아~ 근데 MS_SQL 2005 이상만 지원한다.

요즘 날로 바쁘다보니.. 힘들어 죽갔다..
다음에 실무에 써봐야겠다 ㅋㅋ.

머 성능이 어쩌구 저쩌구하면.. 쓰던거 쓰지 머..
성능을 잘 모르겠다.. 뒷 페이지로 갈수록 좀 더 많은  rownum 을 가져올테니 성능은 뒤로 갈수록 떨어지겠지..

암튼.. 이런게 있다.
..

신고

지금부터 ASP.NET(C#)으로 쿼리분석기를 만들어 봅시다. (VS2005를 사용)

 

결과물부터 보자면 아래와 같다.

사용자 삽입 이미지

파일구성은 마스터페이지, 디자인페이지, 코드페이지 이렇게 3개로 구성했다

마스터페이지는 실제로 동작하는데는 필요업다만.. 그냥 추가했다. ㅋㅋ 내맘이지 머..

 

1. 일단 그럼 마스터페이지부터 간단히 구성해 보자

 디자인소스코드(/Masters/Maginot.master)

  1 <%@ Master Language="C#" AutoEventWireup="true" CodeFile="Maginot.master.cs" Inherits="Masters_Maginot" %>

  2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  3 <html xmlns="http://www.w3.org/1999/xhtml" >
  4 <head runat="server">
  5     <title>Maginot Line</title>
  6 </head>
  7 <body>
  8     <form id="form1" runat="server">
  9     <div>
  10        <asp:contentplaceholder id="queryPlaceHolder" runat="server">
  11        </asp:contentplaceholder>
  12    </div>
  13     <br />
  14        <asp:ContentPlaceHolder ID="resultPlaceHolder" runat="server">
  15         </asp:ContentPlaceHolder>
  16    </form>
  17 </body>
  18 </html>

 

소스코드(Maginot.master.cs)는 내용이 없다. 편집기가 자동행성해준 코드 그대로다.

 

2. 이번엔 쿼리를 입력받고 출력해주는 페이지의 디자인 소스이다.

파일 : query.aspx

 

 <%@ Page Language="C#"  EnableEventValidation="false" MasterPageFile="~/Masters/Maginot.master" AutoEventWireup="true" CodeFile="query.aspx.cs" Inherits="Groupware_Maginot_query" Title="Untitled Page" %>

 <asp:Content ID="Content1" ContentPlaceHolderID="queryPlaceHolder" Runat="Server">
  <h4>Query<br />
  <asp:TextBox TextMode="MultiLine" runat="server" ID="strQuery" Columns="80" Rows="5"></asp:TextBox></h4>
   </asp:Content>
   <asp:Content ID="Content2" ContentPlaceHolderID="resultPlaceHolder" Runat="Server">
    <asp:Button runat="server" ID="query" Text="QEURY" />
            
       <br />
    <asp:Label id="viewContent" runat="server">
    </asp:Label>
   <br />
   <asp:DataGrid runat="server" ID="resultGrid" CellPadding="4" ForeColor="Black" GridLines="Vertical" Width="100%" Font-Size="Small" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px">
   <FooterStyle BackColor="#CCCC99" />
   <SelectedItemStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" Mode="NumericPages" />
    <AlternatingItemStyle BackColor="White" />
    <ItemStyle BackColor="#F7F7DE" />
   <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" Font-Size="Medium" />
  </asp:DataGrid>

 <br />
</asp:Content>

 

3. 이번에 소스코드이다.

파일 : query.aspx.cs

 

    1 using System;

    2 using System.Data;

    3 using System.Data.SqlClient;

    4 using System.Configuration;

    5 using System.Collections;

    6 using System.Web;

    7 using System.Web.Security;

    8 using System.Web.UI;

    9 using System.Web.UI.WebControls;

   10 using System.Web.UI.WebControls.WebParts;

   11 using System.Web.UI.HtmlControls;

   12 

   13 public partial class Groupware_Maginot_query : System.Web.UI.Page

   14 {

   15     string strConn = ConfigurationManager.AppSettings["connectionKey"];

   16 

   17     protected void Page_Load(object sender, EventArgs e)

   18     {

   19         if (IsPostBack)

   20         {

   21             string sql = strQuery.Text.Trim();

   22 

   23             if (sql.Length < 1 || sql == "") return;

   24 

   25             SqlConnection con = new SqlConnection(strConn);

   26             con.Open();

   27             try

   28             {

   29                 if (sql.Substring(0, 6).ToLower() != "select" && sql.Substring(0,3).ToLower() != "sp_")

   30                 {

   31                     SqlCommand cmd = new SqlCommand(sql, con);

   32                     cmd.CommandType = CommandType.Text;

   33 

   34                     SqlDataReader rd = cmd.ExecuteReader();

   35 

   36                     viewContent.Text = rd.RecordsAffected + " 행이 영향을 받았습니다.";

   37                     resultGrid.DataSource = "";

   38                     resultGrid.DataBind();

   39                 }

   40                 else

   41                 {

   42                     SqlDataAdapter adp = new SqlDataAdapter(sql, con);

   43 

   44                     DataSet ds = new DataSet();

   45                     adp.Fill(ds, "dsSet");

   46 

   47                     /*if (CheckPaging.Checked)

   48                     {

   49                         resultGrid.AllowPaging = true;

   50                         resultGrid.PageSize = 10;

   51 

   52                     }*/

   53                     resultGrid.DataSource = ds.Tables["dsSet"].DefaultView;

   54                     resultGrid.DataBind();

   55 

   56                     viewContent.Text = sql;

   57                 }

   58 

   59 

   60             }

   61             catch (Exception eSql)

   62             {

   63                 viewContent.Text = "<font color='red'>" + eSql.Message + "</font>";

   64             }

   65             finally

   66             {

   67                 con.Close();

   68             }

   69 

   70         }

   71     }

   72 

   73 }

 

이것으로 기본 소스는 모두 보았습니다.

무척이나 간단하고 허접하다.

신고

+ Recent posts