DB에서 데이터를 불러와서 뿌려주는 방법은 여러가지가 있지만, asp.net에서는 repeater가 자주 사용된다.

webform 방식으로 구현된 페이지에서 repeater를 사용하는 방법이다.

 

aspx 구현

//aspx 구현부분 
<asp:Repeater ID="rptList" runat="server" onitemdatabound="rptList_ItemDataBound" >
<ItemTemplate>
                <tr>
                <td><%# DataBinder.Eval(Container.DataItem, "SEQNO")%></td>
                <td class="alignL">
                <a href=''#''  onclick="fnView(''<%# DataBinder.Eval(Container.DataItem, "SEQNO")%>'',''<%=ViewData["PAGE"] %>'',''<%=ViewData["SEARCH_TYPE"] %>'',''<%=ViewData["SEARCH_VALUE"] %>'');">
                <%# DataBinder.Eval(Container.DataItem, "SUBJECT").ToString() %>
                </td>
                <td><%#DataBinder.Eval(Container.DataItem, "WDATE").ToString().Length >= 8 ? DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(0, 4) + "-" + DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(4, 2) + "-" + DataBinder.Eval(Container.DataItem, "WDATE").ToString().Substring(6, 2) : DataBinder.Eval(Container.DataItem, "WDATE").ToString()%>   </td>
                <td><asp:Label ID="isFile" runat="server"></asp:Label></td>
                <td><%# DataBinder.Eval(Container.DataItem, "VISIT")%></td>
                </tr>                
</ItemTemplate>
</asp:Repeater>

 

aspx.cs 구현

public void InitData(){
    //cs단에서 바인딩 해주는 부분 
    DataTable dt = new DataTable();
    dt = getList(); //각자 바인딩이 필요한 데이터를 불러온다.
    rptList.DataSource = dt.DefaultView;
    rptList.DataBind();
}

//리피터에 바인딩 하면서 데이터를 셋팅 해주는 부분
//db데이터를 그대로 노출하는 경우도 있지만, 셋팅이 필요한 경우가 많기 때문에 자주 사용한다.
protected void rptList_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemIndex != -1)
    {         
        Label lb = (Label)e.Item.FindControl("isFile");
        string FileName = ((System.Data.DataRowView)e.Item.DataItem)["FILENAME"].ToString().Trim();
        if (FileName.Length > 0)
        {
            lb.Text = @"<img src=""/images/icon/icon_disk.gif"" >";
        }
    }
}

SNS 공유와 더불어 자주 사용되는 링크복사입니다.

<input type="hidden" id="hidUrl" value="gyunbox.tistory.com"/>
<script>
	//주소복사
     function TourUrlCopy() {
        var addrTxt = document.getElementById("hidUrl").value;
        //        var isIE = (document.all)?true:false;
        
		var isIE = false;
		var agent = navigator.userAgent.toLowerCase();
		if ( (navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1) || (agent.indexOf("msie") != -1) ) {
			isIE = true;
		}

        if(isIE){
        if(confirm("이 글의 주소를 클립보드에 복사하시겠습니까?"))
            window.clipboardData.setData("Text",addrTxt);
        }else{
            temp = prompt("Ctrl+C를 눌러 주소를 클립보드로 복사하세요.",addrTxt);
        }
     }
</script>

웹페이지 작업을 하다 보면, 출력 버튼이 있고

출력 버튼 클릭시, 특정 영역의 데이터만 프리트 해야 하는 경우가 있다.

이럴 경우에는 아래 2가지 방법을 활용하면 된다.

특정 div를 출력할때는 divPrint(), 특정 iframe 내용을 출력할때는 iframePrint3()

 

아이프레임 프린트하기/아이프레임출력/특정영역출력/프린트함수/아이프레임프린트

 

<html>
<body>
    <script>

        function divPrint() {
            var inbody = document.body.innerHTML; // 이전 body 영역 저장
            window.onbeforeprint = function () { // 프린트 화면 호출 전 발생하는 이벤트
                document.body.innerHTML = document.getElementById('targetDiv').innerHTML; // 원하는 영역 지정
            }
            window.onafterprint = function () { // 프린트 출력 후 발생하는 이벤트
                document.body.innerHTML = inbody; // 이전 body 영역으로 복구
            }
            window.print();
        }

        function framePrint3() {
            window.frames["frmTest"].focus();
            window.frames["frmTest"].print();
        }
    </script>
    <a href="#" onclick="javascript:divPrint();">특정div출력</a><br />
    <a href="#" onclick="javascript:framePrint3();">아이프레임내용출력</a><br />
    <h1>div 영역</h1>
    <DIV ID="targetDiv" STYLE="BORDER:1PX SOLID RED; WIDTH:500PX; HEIGHT:100PX;FLOAT:LEFT;">
        DIV내용
    </DIV>
    <div id="" style="height:500px; display:block;">
        <h1>아이프레임 영역</h1>
        <iframe src="printinner.asp" id="frmTest" name="frmTest"
            style="width:500px; height:500px; border:1px solid red;float:left; ">
    </div>
</body>
</html>

<%option explicit %> 를 asp 페이지에 상단에 추가함으로써 선언되지 않은 변수의 사용을 막는다.

코드가 길어지는 경우, 유지 보수에 도움이 된다. ( 변수가 의도와 다르게 사용되는 경우, 혼용 되는 경우를 막음 )

<% option explicit %>

Dim name
name="당꿈응"

Response.Write name

phone = "010-1234-5678" '선언되지 않은 변수사용으로 에러발생

+ Recent posts