테이블을 대게 다음과 같은 테이블 구조를 가진다.
<table>
<tr>
<th>글번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
<table>
<tr>
<th>글번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
<tr>
<th>1</th>
<th>글제목</th>
<th>홍길동</th>
<th>2011.04.26</th>
<th>14</th>
</tr>
</table>
빨간색으로 표시된 <tr>의 내용이 게시판의 한 줄의 내용이 된다.
다음은 DB와 연결해서 DB에 저장된 글의 갯수만큼
화면에 게시물을 출력하기 위한 많은 방법 중 Repeater를 사용한 방법이다.
<asp:Repeater ID="DataListTable" runat="server" OnItemDataBound="DataListTable_ItemDataBound" EnableViewState="false">
<HeaderTemplate>
<table class="tblList">
<caption><asp:Label ID="tableCaption" runat="server" Text="" EnableViewState="false"></asp:Label></caption>
<tr>
<th>글번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="center"><%#Eval("idxNum") %></td>
<td align="center"><%#Eval("Title") %></td>
<td align="center"><%#Eval("Name") %></td>
<td align="center"><%#Eval("Date") %></td>
<td align="center"><%#Eval("Visit") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr runat="server" id="_EmptyData" visible="true" EnableViewState="false">
<td align="center" height="300" colspan="5">등록된 게시글이 없습니다.</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
테이블의 내용을 repeater로 감싸준다.
여기서! HeaderTemplate와 FooterTemplate은 한번씩, ItemTemplate만 반복적으로 출력된다는 걸 알아야한다.
따라서 게시판에 컬럼에 해당하는 부분은 헤더로, 글이없을 경우 띄어 줄 경고문은 푸터로 따로 빼주고
반복적으로 출력되야 할(게시글) 내용만 ItemTemplate으로 감싸준다.
aspx에서 위와같은 작업을 다 끝냈다면,
aspx.cs단에서 DB와 연결하고 따로 Repeater를 적용한 테이블을 컨드롤 해줘야한다.
(MemberLectureSetting거 컨트롤하는 작업을 하며, Page_Load에서 MemberLectureSetting()를 호출하요 실행한다.)
<th>1</th>
<th>글제목</th>
<th>홍길동</th>
<th>2011.04.26</th>
<th>14</th>
</tr>
</table>
빨간색으로 표시된 <tr>의 내용이 게시판의 한 줄의 내용이 된다.
다음은 DB와 연결해서 DB에 저장된 글의 갯수만큼
화면에 게시물을 출력하기 위한 많은 방법 중 Repeater를 사용한 방법이다.
<asp:Repeater ID="DataListTable" runat="server" OnItemDataBound="DataListTable_ItemDataBound" EnableViewState="false">
<HeaderTemplate>
<table class="tblList">
<caption><asp:Label ID="tableCaption" runat="server" Text="" EnableViewState="false"></asp:Label></caption>
<tr>
<th>글번호</th>
<th>제목</th>
<th>작성자</th>
<th>작성일</th>
<th>조회수</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="center"><%#Eval("idxNum") %></td>
<td align="center"><%#Eval("Title") %></td>
<td align="center"><%#Eval("Name") %></td>
<td align="center"><%#Eval("Date") %></td>
<td align="center"><%#Eval("Visit") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
<tr runat="server" id="_EmptyData" visible="true" EnableViewState="false">
<td align="center" height="300" colspan="5">등록된 게시글이 없습니다.</td>
</tr>
</table>
</FooterTemplate>
</asp:Repeater>
테이블의 내용을 repeater로 감싸준다.
여기서! HeaderTemplate와 FooterTemplate은 한번씩, ItemTemplate만 반복적으로 출력된다는 걸 알아야한다.
따라서 게시판에 컬럼에 해당하는 부분은 헤더로, 글이없을 경우 띄어 줄 경고문은 푸터로 따로 빼주고
반복적으로 출력되야 할(게시글) 내용만 ItemTemplate으로 감싸준다.
aspx에서 위와같은 작업을 다 끝냈다면,
aspx.cs단에서 DB와 연결하고 따로 Repeater를 적용한 테이블을 컨드롤 해줘야한다.
(MemberLectureSetting거 컨트롤하는 작업을 하며, Page_Load에서 MemberLectureSetting()를 호출하요 실행한다.)
protected void MemberLectureSetting()
{
DataSet ds = new DataSet();
ds = _MemberClass.Member_List_Default_Idx(_idx, "SP_MemberCollageLectureList", Page.Response);
//DataRow row = _MemberClass.Member_View_Default_Idx(_idx, "SP_MemberCollage_View", Page.Response);
if (ds != null)
{
DataListTable.DataSource = ds.Tables[0];
DataListTable.DataMember = "DataListTable";
DataListTable.DataBind();
}
}
{
DataSet ds = new DataSet();
ds = _MemberClass.Member_List_Default_Idx(_idx, "SP_MemberCollageLectureList", Page.Response);
//DataRow row = _MemberClass.Member_View_Default_Idx(_idx, "SP_MemberCollage_View", Page.Response);
if (ds != null)
{
DataListTable.DataSource = ds.Tables[0];
DataListTable.DataMember = "DataListTable";
DataListTable.DataBind();
}
}
protected void DataListTable_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (_totCnt < 1)
{
if (e.Item.ItemType == ListItemType.Header)
{
Label tableCaption = (Label)e.Item.FindControl("tableCaption");
tableCaption.Text = "";
}
else if (e.Item.ItemType == ListItemType.Footer)
{
HtmlTableRow lbl_footer = (HtmlTableRow)e.Item.FindControl("_EmptyData");
lbl_footer.Visible = true;
}
}
else
{
if (e.Item.ItemType == ListItemType.Header)
{
Label tableCaption = (Label)e.Item.FindControl("tableCaption");
tableCaption.Text = "";
}
else if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView)e.Item.DataItem;
}
else if (e.Item.ItemType == ListItemType.Footer)
{
HtmlTableRow lbl_footer = (HtmlTableRow)e.Item.FindControl("_EmptyData");
lbl_footer.Visible = false;
}
}
}
{
if (_totCnt < 1)
{
if (e.Item.ItemType == ListItemType.Header)
{
Label tableCaption = (Label)e.Item.FindControl("tableCaption");
tableCaption.Text = "";
}
else if (e.Item.ItemType == ListItemType.Footer)
{
HtmlTableRow lbl_footer = (HtmlTableRow)e.Item.FindControl("_EmptyData");
lbl_footer.Visible = true;
}
}
else
{
if (e.Item.ItemType == ListItemType.Header)
{
Label tableCaption = (Label)e.Item.FindControl("tableCaption");
tableCaption.Text = "";
}
else if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView)e.Item.DataItem;
}
else if (e.Item.ItemType == ListItemType.Footer)
{
HtmlTableRow lbl_footer = (HtmlTableRow)e.Item.FindControl("_EmptyData");
lbl_footer.Visible = false;
}
}
}
'ASP.NET' 카테고리의 다른 글
ASP.NET 접속자 IP찾기 (0) | 2011.05.17 |
---|---|
Enter를 <br / >로 바꿔주기 (0) | 2011.05.16 |
StringBuilder (0) | 2011.04.14 |
ASP.NET 글 조회수 증가 (0) | 2011.04.14 |
LastIndexOf (0) | 2011.04.13 |