Esempio n. 1
0
 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 = "(업로드된 파일이 없습니다.)";
            }
        }
Esempio n. 3
0
        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();
            }
        }