WebDataControl - GridView 컨트롤 (데이터 출력 컨트롤)
.NET프로그래밍/ASP.NET 3.5 SP1 2009. 10. 19. 14:56 |'도구상자'의 "GridView"컨트롤을 FrmGridView.aspx의 <div>태그안에 마우스로 "드래그&드롭" --> "GridView 컨트롤"의 '스마트버튼' 마우스로 클릭 -> "데이터 소스 구성" 마우스로 클릭하여 '마법사' 창을 통해 (SqlDataSource컨트롤에서와 같은 과정으로 하되, 단 "ORDER BY"에서 "Num"의 DESC(내림차순)로) 데이터베이스에 연결한다.
"GridView"의 이벤트속성 중 아래그림과 같이 "RowDataBound"속성을 더블클릭하여 [FrmGridView.aspx]의 "코드비하인드페이지"인 [FrmGridView.aspx.cs]에서 이벤트핸들러를 추가하고 코드를 작성한다.
[FrmGridView.aspx] 소스코드 및 디자인
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FrmGridView.aspx.cs" Inherits="FrmGridView" %>
<!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>
<br />
GridView로 Memos 테이블의 데이터 출력<br />
<br />
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="False"
DataKeyNames="Num" ShowFooter="true"
DataSourceID="SqlDataSource1" onrowdatabound="GridView1_RowDataBound">
<Columns>
<asp:BoundField DataField="Num" HeaderText="번호" ItemStyle-Width="100px"
ItemStyle-HorizontalAlign="Center"
HeaderStyle-BackColor="Blue"
HeaderStyle-ForeColor="White"
FooterStyle-BackColor="Aqua"
/>
<asp:TemplateField HeaderText="이름">
<ItemTemplate>
<a href='mailto:<%# Eval("Email") %>'>
<%# Eval("Name") %>
</a>
</ItemTemplate>
</asp:TemplateField>
<asp:HyperLinkField HeaderText="이름"
DataTextField="Name"
DataNavigateUrlFormatString="View.aspx?Num={0}"
DataNavigateUrlFields="Num" />
</Columns>
<RowStyle BackColor="Yellow" />
<AlternatingRowStyle BackColor="Gray" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [Memos] ORDER BY [Num] DESC">
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
-------------------------------------------------------------------------------------
[FrmGridView.aspx.cs] 소스코드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class FrmGridView : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
// 푸터일 때만 "현재시간" 텍스트입력
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.Cells[0].Text = "현재시간 : ";
e.Row.Cells[2].Text = DateTime.Now.ToShortTimeString();
}
}
}
-------------------------------------------------------------------------------------
[실행결과]
--> 첫 실행화면(처음 웹 페이지 로드시). 푸터(Footer)부분에 현재시간이 출력되었다. ([FrmGridView.aspx.cs] 소스코드에서 분홍색 형광펜 칠한 부분의 코드와 비교할 것!)
--> 아래그림에서 첫 번째 열의 이름("Name")을 마우스로 클릭하면 "Outlook Express("Email")"로 이동한다.([FrmGridView.aspx] 소스코드에서 회색형광펜 칠한 부분의 코드와 비교할 것!)
--> 아래그림에서 두 번째 열의 하이퍼링크가 걸린 이름("Name")위에 마우스오버(MouseOver)하면 아래그림에서 빨간색 테두리로 표시한 것과 같이 웹 페이지의 하단부에 "View.aspx?Num=2"와 같이 표시되는 것을 볼 수 있다([FrmGridView.aspx] 소스코드에서 하늘색 형광펜으로 칠한 부분의 코드와 비교할 것!). 하지만, 여기서는 "View.aspx"를 생성하지 않아서 두 번째 열의 하이퍼링크가 걸려 있는 "이름(Name)"을 클릭하면 웹페이지에서 에러가 난다.
'.NET프로그래밍 > ASP.NET 3.5 SP1' 카테고리의 다른 글
WebDataControl - DataList 컨트롤 (데이터 출력 컨트롤) (0) | 2009.10.19 |
---|---|
WebDataControl - FrmListView 컨트롤 (데이터 출력 컨트롤) (0) | 2009.10.19 |
WebDataControl - FormView컨트롤 (0) | 2009.10.19 |
WebDataControl - SqlDataSource컨트롤 (0) | 2009.10.19 |
WebReply (답변형 게시판) (0) | 2009.10.16 |