private void DisplayData() { if (!SearchMode) { if (AccountHandler.HasGroup("Administrators")) { // 기본 리스트 ctlBoardList.DataSource = _repository.GetAllAdmin(PageNumber, PageSize); } else { // 기본 리스트 ctlBoardList.DataSource = _repository.GetAll(userName, PageNumber, PageSize); } } else { if (AccountHandler.HasGroup("Administrators")) { // 검색 리스트 ctlBoardList.DataSource = _repository.GetSearchAllAdmin(SearchField, SearchQuery, PageNumber, PageSize); } else { // 검색 리스트 ctlBoardList.DataSource = _repository.GetSearchAll(userName, SearchField, SearchQuery, PageNumber, PageSize); } } ctlBoardList.DataBind(); }
private void DisplayData() { //[A] 넘겨온 Id 값에 해당하는 레코드 하나 읽어서 모델 클래스에 바인딩 var model = new ArticleBase(); if (AccountHandler.HasGroup("Administrators")) { model = _repository.GetByIdAdmin(Convert.ToInt32(_Id)); } else { model = _repository.GetById(Convert.ToInt32(_Id), _userName); } //[B] 각각의 항목을 컨트롤(레이블, 텍스트박스, ...)에 출력 lblNum.Text = _Id.ToString(); // 번호 lblName.Text = model.Name; // 이름 lblEmail.Text = String.Format("<a href=\"mailto:{0}\">{0}</a>", model.Email); lblTitle.Text = model.Title; lblReadCount.Text = model.ReadCount.ToString(); lblHomepage.Text = String.Format("<a href=\"{0}\" target=\"_blank\">{0}</a>", model.Homepage); lblPostDate.Text = model.PostDate.ToString(); lblPostIp.Text = model.PostIp; //[C] 인코딩 방식에 따른 데이터 출력 string content = model.Content; // 내용 string strEncoding = model.Encoding; if (strEncoding == "Text") // Text: 소스 그대로 표현 { lblContent.Text = HtmlUtility.EncodeWithTabAndSpace(content); } else if (strEncoding == "Mixed") // Mixed: 엔터처리만 { lblContent.Text = content.Replace("\r\n", "<br />"); } else // HTML: HTML 형식으로 출력 { lblContent.Text = content; // 변환없음 } //[D] 파일 다운로드 링크 만들기 if (model.FileName.Length > 1) { lblFile.Text = String.Format( "<a href='./BoardDown.aspx?Id={0}'>" + "{1}{2} / 전송수: {3}</a>", model.Id, "<img src=\"/images/ext/ext_zip.gif\" border=\"0\">", model.FileName, model.DownCount); if (BoardLibrary.IsPhoto(model.FileName)) { ltrImage.Text = "<img src=\'ImageDown.aspx?FileName=" + $"{Server.UrlEncode(model.FileName)}\' class=\"img-fluid rounded\">"; } } else { lblFile.Text = "(업로드된 파일이 없습니다.)"; } }
protected void Page_Load(object sender, EventArgs e) { userName = Session["UserName"].ToString(); // 세션변수는 페이지 로드에서 선언 #region 검색 모드 결정: 검색 모드이면 SearchMode 속성이 true // 검색 모드 결정: 검색 모드이면 SearchMode 속성이 true if ( !String.IsNullOrEmpty(HttpContext.Current.Request["SearchQuery"]) && !String.IsNullOrEmpty(HttpContext.Current.Request["SearchField"])) { SearchMode = true; SearchField = SqlUtility.EncodeSqlString(HttpContext.Current.Request["SearchField"]); // 검색할 필드 SearchQuery = SqlUtility.EncodeSqlString(HttpContext.Current.Request["SearchQuery"]); // 검색할 내용 } #endregion #region 쿠키로 페이지 번호 유지 // Page 쿼리스트링 또는 쿠키에 저장된 Page 번호에 해당하는 페이지 값으로 PageNumber 변수 초기화 string cookieName = Request["BoardName"]; // 단일형("ArticleIndex") 또는 멀티형 게시판(게시판 별칭) if (string.IsNullOrEmpty(cookieName)) { cookieName = "ArticleIndex"; } if (!String.IsNullOrEmpty(Request["Page"])) { PageNumber = Convert.ToInt32(Request["Page"]); Response.Cookies[cookieName]["Page"] = PageNumber.ToString(); // 페이지 번호 유지 } else { // 쿠키를 사용한 리스트 페이지 번호 유지 적용: 각 게시판별 페이지 번호가 따로 저장됨 ["Notice"]["Page"], ["Free"]["Page"] 식으로 if (Request.Cookies[cookieName] != null && Request.Cookies[cookieName]["Page"] != null) { if (!String.IsNullOrEmpty(Request.Cookies[cookieName]["Page"])) { PageNumber = Convert.ToInt32(Request.Cookies[cookieName]["Page"]); } } } #endregion #region 레코드 카운트 출력 // 레코드 카운트 출력 if (!SearchMode) { if (AccountHandler.HasGroup("Administrators")) { // 전체 레코드 수 출력 RecordCount = _repository.GetCountAllAdmin(); } else { // 전체 레코드 수 출력 RecordCount = _repository.GetCountAll(userName); } } else { if (AccountHandler.HasGroup("Administrators")) { // 검색된 레코드 수 출력 RecordCount = _repository.GetCountBySearchAdmin(SearchField, SearchQuery); } else { // 검색된 레코드 수 출력 RecordCount = _repository.GetCountBySearch(userName, SearchField, SearchQuery); } } lblTotalRecord.Text = RecordCount.ToString(); // 레코드 수 출력 #endregion #region 페이징 처리 // 페이징 처리 this.AdvancedPagingSingleWithBootstrap.PageIndex = PageNumber - 1; this.AdvancedPagingSingleWithBootstrap.RecordCount = RecordCount; #endregion // 페이지 처음 로드시 게시판 데이터 출력 if (!Page.IsPostBack) { DisplayData(); } }