using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
/// <summary>
/// BoardList : 완성형(DotNetNote) 게시판의 리스트 페이지
/// </summary>
public partial class DotNetNote_BoardList : System.Web.UI.Page
{
#region Private/Protected/Public Member Variables
public int intPage = 0; // 현재 보여줄 페이지 번호
public int intTotalCount = 0;//총 레코드 갯수(글번호 순서 정렬용)
#endregion
#region Event Handlers
protected void Page_Load(object sender, System.EventArgs e)
{
//쿠키를 사용한 리스트 페이지 번호 유지 적용
if (Request.Cookies["DotNetNote"] != null)
{
if (!String.IsNullOrEmpty(
Request.Cookies["DotNetNote"]["PageNum"]))
{
intPage = Convert.ToInt32(
Request.Cookies["DotNetNote"]["PageNum"]);
}
else
{
intPage = 0;
}
this.ctlBoardList.PageIndex = intPage;
}
intTotalCount = GetTotalRecordCount();//DotNetNote테이블의 총 데이터 수
if (!Page.IsPostBack)
{
ReadData();
}
}
#region 글쓰기 페이지로 이동
protected void btnWrite_Click(object sender, System.EventArgs e)
{
Response.Redirect("./BoardWrite.aspx");
}
#endregion
#region 검색 처리 링크
protected void btnSearch_Click(object sender, System.EventArgs e)
{
string strQuery =
String.Format(
"./BoardSearch.aspx?SearchField={0}&SearchQuery={1}",
SearchField.SelectedItem.Value,
SearchQuery.Text
);
Response.Redirect(strQuery);
}
#endregion
#region 마우스 오버 효과
protected void ctlBoardList_RowCreated(
object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes["onmouseover"] =
"this.style.backgroundColor ='#FFE9BB'";
e.Row.Attributes["onmouseout"] =
"this.style.backgroundColor=''";
}
}
#endregion
#region 페이지 이동 링크 기능 구현
protected void ctlBoardList_PageIndexChanging(
object sender, GridViewPageEventArgs e)
{
intPage = e.NewPageIndex;
ctlBoardList.PageIndex = e.NewPageIndex;
Response.Cookies["DotNetNote"]["PageNum"] =
intPage.ToString();//페이지 번호 유지
ReadData();
}
#endregion
#endregion
#region Public Methods
#region 현재 게시판 테이블의 레코드의 수를 반환하는 메서드
private int GetTotalRecordCount()
{
SqlConnection objCon = new SqlConnection();
objCon.ConnectionString =
ConfigurationManager.ConnectionStrings[
"ConnectionString"].ConnectionString;
objCon.Open();
SqlCommand objCmd = new SqlCommand();
objCmd.Connection = objCon;
objCmd.CommandText = "GetCountDotNetNote";
objCmd.CommandType = CommandType.StoredProcedure;
int totalCount = (int)objCmd.ExecuteScalar();
objCon.Close();
return totalCount;
}
#endregion
#region 출력상세 페이지 이동 링크
public string FuncLink(object objNum)
{
return String.Format(
"BoardView.aspx?Num={0}", objNum.ToString());
}
#endregion
#region 각 글의 Step별 들여쓰기 처리
public string FuncStep(object objStep)
{
int intStep = Convert.ToInt32(objStep);
string strTemp = String.Empty;
if (intStep == 0)
{
strTemp = String.Empty;
}
else
{
for (int i = 0; i < intStep; i++)
{
strTemp =
String.Format(
"<img src={0} height={1} width={2}>",
"images/blank.gif",
"0",
(intStep * 15)
);
}
strTemp += "<img src='images/re.gif'>";
}
return strTemp;
}
#endregion
#region 제목 길이 자르기
public static string FuncCutString(
object strTitle, int intMax)
{
return RedPlus.Library.Board.CutString(
strTitle.ToString(), intMax);
}
#endregion
#region 파일 다운로드 기능
public string FuncFileDown(
int intNum, string strFileName, string strFileSize)
{
if (strFileName.Length > 0)
{
return "<a href='BoardDown.aspx?Num=" + intNum.ToString()
+ "'>" + RedPlus.Library.Board.DownloadType(
strFileName, strFileName + "("
+ RedPlus.Library.Board.ConvertToFileSize(
Convert.ToInt32(strFileSize)) + ")") + "</a>";
}
else
{
return "-";
}
}
#endregion
#region 24시간내에 올라온 글 new 이미지 표시하기
public string FuncNew(object strDate)
{
DateTime originDate = Convert.ToDateTime(strDate);
TimeSpan objTs = DateTime.Now - originDate;
Literal l = new Literal();
if (objTs.TotalMinutes < 1440)
{
l.Text = "<img src=images/new.gif>";
}
return l.Text;
}
#endregion
#region 현재 페이지에 해당하는 데이터 읽어서 그리드뷰에 출력
private void ReadData()
{
SqlConnection objCon = new SqlConnection(
ConfigurationManager.ConnectionStrings[
"ConnectionString"].ConnectionString);
objCon.Open();
SqlCommand objCmd = new SqlCommand("ListDotNetNote", objCon);
objCmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter objDa = new SqlDataAdapter();
objDa.SelectCommand = objCmd;
DataSet objDs = new DataSet();
objDa.Fill(objDs, "DotNetNote");
this.ctlBoardList.DataSource =
objDs.Tables["DotNetNote"].DefaultView;
this.ctlBoardList.DataBind();
}
#endregion
#endregion
} |