<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>
 
<html>
   <script runat="server">
 
      ICollection CreateDataSource() 
      {
      
         // Create sample data for the DataList control.
         DataTable dt = new DataTable();
         DataRow dr;
 
         // Define the columns of the table.
         dt.Columns.Add(new DataColumn("IntegerValue", typeof(Int32)));
         dt.Columns.Add(new DataColumn("StringValue", typeof(String)));
         dt.Columns.Add(new DataColumn("CurrencyValue", typeof(double)));
         dt.Columns.Add(new DataColumn("ImageValue", typeof(String)));
 
         // Populate the table with sample values.
         for (int i = 0; i < 9; i++) 
         {
            dr = dt.NewRow();
 
            dr[0] = i;
            dr[1] = "Description for item " + i.ToString();
            dr[2] = 1.23 * (i + 1);
            dr[3] = "Image" + i.ToString() + ".jpg";
 
            dt.Rows.Add(dr);
         }
 
         DataView dv = new DataView(dt);
         return dv;
      }
 
 
      void Page_Load(Object sender, EventArgs e) 
      {

         // Load sample data only once, when the page is first loaded.
         if (!IsPostBack) 
         {
            ItemsList.DataSource = CreateDataSource();
            ItemsList.DataBind();
         }

      }
 
   </script>
 
<body>
 
   <form runat=server>

      <h3>DataList Example</h3>
 
      <asp:DataList id="ItemsList"
           BorderColor="black"
           CellPadding="5"
           CellSpacing="5"
           RepeatDirection="Vertical"
           RepeatLayout="Table"
           RepeatColumns="3"
           ShowBorder="True"
           runat="server">

         <HeaderStyle BackColor="#aaaadd">
         </HeaderStyle>

         <AlternatingItemStyle BackColor="Gainsboro">
         </AlternatingItemStyle>

         <HeaderTemplate>

            List of items

         </HeaderTemplate>
               
         <ItemTemplate>

            Description: <br>
            <%# DataBinder.Eval(Container.DataItem, "StringValue") %>

            <br>

            Price: <%# DataBinder.Eval(Container.DataItem, "CurrencyValue", "{0:c}") %>

            <br>

            <asp:Image id="ProductImage"
                 ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ImageValue") %>'
                 runat="server"/>

         </ItemTemplate>
 
      </asp:DataList>
 
   </form>
 
</body>
</html>

----------------------------------------------------------------------------------             

더간단 방법 ㅋ

  DataTable dt = new DataTable();
                DataRow dr;
                dt.Columns.Add("title");               
                dr = dt.NewRow();
                dr["title"] = "데이터가 없습니다.";
                dt.Rows.Add(dr);

                this.DataListTest.DataSource = dt;
                DataListTest.DataBind();

[RadioButtonList] 자바스크립트로 선택체크하기

웹페이지

<script type="text/javascript">
    function CheckYack(clientID){
            var arrayYack =  document.getElementsByName(clientID);
            alert(arrayYack[0].checked );
    }
</script>

                    <asp:RadioButtonList ID="RadioButtonList1" runat="server"
                        RepeatDirection="Horizontal">
                        <asp:ListItem Value="1">동의</asp:ListItem>
                        <asp:ListItem Selected="True" Value="0">동의안함</asp:ListItem>
                    </asp:RadioButtonList>

  <asp:ImageButton ID="ImageButton1" runat="server"
                    ImageUrl="../image/appl/bt_next.gif" onclick="ImageButton1_Click" />

비하인드 코드

    protected void Page_Load(object sender, EventArgs e)
    { 
        ImageButton1.Attributes.Add("onClick", "return CheckYack('" + this.RadioButtonList1.UniqueID + "')");

    }

저장

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Configuration;

namespace WebApplicationTest

{

public partial class _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

}

protected void Button1_Click(object sender, EventArgs e)

{

DataSet1TableAdapters.ImageTableTableAdapter adapter = new WebApplicationTest.DataSet1TableAdapters.ImageTableTableAdapter();

byte[] bt = this.FileUpload1.FileBytes; //이미지를 바이트로 저장하기

DataSet1.ImageTableDataTable dt = new DataSet1.ImageTableDataTable();

DataSet1.ImageTableRow row = dt.NewImageTableRow();

row.ImageContent = bt;

dt.AddImageTableRow(row);

adapter.Update(dt);

}

}

불러오기

InHandler.ashx 파일생성

<%@ WebHandler Language="C#" Class="InHandler" %>

using System;

using System.Web;

public class InHandler : IHttpHandler {

public void ProcessRequest (HttpContext context) {

가져오기 쿼리…

System.Data.DataTable dt = op.GetDataTable(); //가져온 데이터

byte[] pic = (byte[])dt.Rows[0]["FILE_ATTACH"];//이미지를 저장하고 있는 필드

context.Response.OutputStream.Write(pic, 0, pic.Length);

context.Response.End();

}

public bool IsReusable {

get {

return true;

}

}

}

실제사용은 간단하게

<img src=" InHandler.ashx"> 이렇게 하면 끝~

Web.config 암호화 방법

Cmd 창에서 aspnet_regiis.exe 가 있는 위치로 이동

(일반적인 aspnet_regiis.exe위치 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)

D:\디렉토리= web.config 가 있는 위치

Cmd창에서 아래의 문장 실행

암호화

aspnet_regiis.exe -pef "connectionStrings" "D:\디렉토리"

복호화

aspnet_regiis.exe -pd "connectionStrings" D:"\디렉토리"

암호화 후 사이트가 안뜰때

asp.net 서비스 접근자(NT Authority\Network Service) 의 사용자가 권한이 없기 때문에 오류발생

서비스 권한 추가 방법

Cmd 창에서 aspnet_regiis.exe 가 있는 위치로 이동

Cmd창에서 아래의 문장 실행

- aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT Authority\Network Service"

구성 섹션 암호화 및 해독

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ko/dv_vwdcon/html/eb5dee1e-f6ac-4b16-bc2c-32c1e8cd9341.htm

image

 

web.config 에 아래 항목 추가 하면됩니다

<!--

      파일 용량설정
-->
    <httpRuntime  maxRequestLength="52100" ></httpRuntime>

 

[MSDN]

NET Framework 일반 참조

httpRuntime 요소(ASP.NET 설정 스키마)

ASP.NET 응용 프로그램에 대한 요청을 처리하는 방법을 결정하는 ASP.NET HTTP 런타임 설정을 구성합니다.

configuration 요소(일반 설정 스키마)
system.web 요소(ASP.NET 설정 스키마)
httpRuntime 요소(ASP.NET 설정 스키마)

선택적 Int32 특성입니다.

입력 스트림 버퍼링 임계값 제한(KB)을 지정합니다. 이 제한을 설정하면 예를 들어 사용자가 서버에 큰 파일을 게시할 때 발생하는 서비스 거부 공격을 방지할 수 있습니다.

기본값은 4096(4MB)입니다.

image

 

전제 : Windows Server 2003 (IIS 6.0)
현상 : IIS에서 웹 서비스 확장을 눌러보면 ASP.NET 2.0 이 안보인다
원인 : .Net Framework 2.0이 설치된 이후에 IIS가 깔린 경우 IIS에서는 .NET Framework 2.0을 인지하지 못함
해결책 :
C:\WINDOWS\Microsoft.NET\Framework\v.2.0.50727\aspnet_regiis -i

image

Global.asax 파일의 Application_Error 부분에 다음과 같은 형식으로 처리해 주면 됩니다.
protected void Application_Error(Object sender, EventArgs e)
  {

         Exception objErr = Server.GetLastError();
string err = "<b>Error Caught in Application_Error event</b><hr><br>" +
             "<br><b>Error in: </b>" + Request.Url.ToString() +
             "<br><b>Error Message: </b>" + objErr.Message.ToString()+
             "<br><b>Stack Trace:</b><br>" +
             Server.GetLastError().ToString();
//이벤트로그에 기록
            EventLog.WriteEntry("Project.AppEvent.aspx",err,EventLogEntryType.Error);
//해당 페이지에 오류내용 출력
            Response.Write(err);
            Server.ClearError();
  }

위와 같이 처리시, 해당 오류가 발생한 페이지에 오류내용을 출력하며, 이벤트로그에 해당내용을 기록하게 됩니다.
위 err 내용은 디자인은 해당 웹페이지에 맞게 변경하면 됩니다.
오류발생시 특정 디자인된 페이지로 이동하게 할려면 Web.config 에 다음을 추가하면 됩니다.
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
</customErrors>
각 오류코드 마다 다른 페이지로 이동하게 할경우는 다음과 같게 하면 됩니다.
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>

customErrors 요소(ASP.NET 설정 스키마)

ASP.NET 응용 프로그램의 사용자 지정 오류 메시지에 대한 정보를 제공합니다. customErrors 요소는 응용 프로그램 파일 계층 구조의 모든 수준에 정의할 수 있습니다.

<customErrors  
   mode="Off|On|RemoteOnly" 
/>

완전한 예외 정보에는 정확한 서버 예외와 서버 스택 추적 내용이 포함됩니다. 필터링된 정보에는 표준 원격 예외가 포함되지만 서버 스택 추적 내용은 포함되지 않습니다.

다음 표에서는 예외 정보를 받는 호출자와 받게 되는 정보 유형을 지정하는 세 가지 서버 채널 속성 값에 대해 설명합니다.

Off 모든 호출자가 완전한 예외 정보를 받습니다

On 모든 호출자가 필터링된 예외 정보를 받습니다.

RemoteOnly

로컬 호출자는 완전한 예외 정보를 받고 원격 호출자는 필터링된 예외 정보를 받습니다

예제

<configuration>
  <system.web>
    <customErrors defaultRedirect="GenericError.htm"
                  mode="RemoteOnly">
      <error statusCode="500"
             redirect="InternalError.htm"/>
    </customErrors>
  </system.web>
</configuration>

런타임에 DataList 항목 사용자 지정

    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {

  //항목구분해줘야 하네... e.Item.ItemType == ListItemType.Item 만하니깐 한다리건너 나오고 나오고 한다 ㅋㅋㅋ

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            System.Data.DataRowView drv = (System.Data.DataRowView)(e.Item.DataItem);
            Response.Write(drv.Row["member_id"].ToString() + "<br>");
        }

    }

간단하게 설명해서 게시판 리스트가 쭈욱 나오는데 아이디를 비교해서 삭제 버튼을 보여줄 필요가 있따  그때 각행을 돌때 아이디를 비교 해서 작업을 처리할수 있따

 

 

페이지를 처리하는 동안 DataList 컨트롤은 페이지에 렌더링할 개별 항목을 만듭니다. 항목이 만들어질 때 이를 사용자 지정할 수 있도록 DataList 컨트롤은 다음과 같은 두 개의 이벤트를 발생시킵니다.

  • ItemCreated 이벤트는 DataList 컨트롤이 각 항목, 교대로 반복되는 항목, 머리글, 바닥글 등을 만들 때 발생됩니다.

  • ItemDataBound 이벤트는 항목의 컨트롤이 데이터 바인딩된 다음에 발생됩니다. 이벤트 매개 변수를 사용하여 데이터 바인딩에 사용되는 데이터에 액세스할 수 있습니다. 데이터에 따라 사용자 지정하는 경우 이 이벤트를 사용합니다.

이러한 이벤트에 대한 응답으로 항목을 변경할 수 있습니다. 흔한 예로, 항목에 표시되는 데이터에 따라 항목의 모양을 변경할 수 있습니다. 예를 들어 데이터베이스에서 읽은 숫자 값이 음수이면 항목의 배경색을 빨강으로 설정합니다.

ItemCreated 이벤트를 사용하여 런타임에 항목을 사용자 지정하려면

  1. DataList 컨트롤의 ItemCreated 이벤트에 대한 이벤트 처리기를 만듭니다.

  2. 이벤트 처리기에서 Item 개체를 사용하여 e 이벤트 인수 개체에서 현재 항목을 가져옵니다. 현재 항목의 인덱스는 Item 개체의 ItemIndex 속성을 통해 사용할 수 있으며 해당 형식은 ItemType 속성(ListItemType 열거형을 사용하여 정의됨)을 통해 사용할 수 있습니다.

    참고

    ItemIndex 속성은 Item, AlternatingItem 및 SelectedItem 개체에 대해서만 양수 값을 반환합니다. 머리글, 바닥글, 구분 기호 항목의 인덱스 값은 -1입니다.

    다음 예제에서는 항목의 배경색을 조건에 따라 수정할 수 있는 방법을 보여 줍니다. 이 예제에서는 ItemType 속성과 ListItemType 열거형을 사용하여 항목의 배경색을 설정합니다. 항목은 LightGoldenrodYellow로, 교대로 반복되는 항목은 DarkGoldenrod로, 선택한 항목은 Yellow로 각각 설정됩니다.

protected void DataList1_ItemCreated(object sender, 
    EventArgs e)
{
   switch (e.Item.ItemType)
   {
      case ListItemType.Item :
         e.Item.BackColor = 
             System.Drawing.Color.LightGoldenrodYellow;
         break;
      case ListItemType.AlternatingItem :
         e.Item.BackColor = System.Drawing.Color.DarkGoldenrod;
         break;
      case ListItemType.SelectedItem :
         e.Item.BackColor = System.Drawing.Color.Yellow;
         break;
      default :
         // Add code here to handle the header, footer, and 
         // separator templates.
         break;
      }
}

ItemCreated 이벤트가 발생된 당시에는 템플릿의 개별 컨트롤이 아직 데이터에 바인딩되어 있지 않지만 ItemDataBound 이벤트에서 데이터를 사용할 수 있습니다.

ItemDataBound 이벤트를 사용하여 런타임에 항목을 사용자 지정하려면

DataList 컨트롤의 ItemDataBound 이벤트에 대한 이벤트 처리기를 만듭니다.

이벤트 처리기에서 머리글 또는 바닥글이 아닌 Item, AlternatingItem 또는 EditItem으로 작업 중인지 테스트하십시오.

DataItem 속성을 사용하여 컨트롤에 바인딩될 데이터를 테스트하고 이를 비교 기준으로 사용합니다.

다음 예제에서는 데이터를 바탕으로 하는 조건적 테스트 방법을 보여 줍니다. 예제에서는 이벤트 인수의 DataItem 속성을 DataRowView 개체로 캐스팅합니다. 그런 다음 현재 DataItem에서 Quantity라는 필드를 추출합니다. Quantity가 10보다 작으면 DataList 컨트롤의 항목이 빨강으로 설정됩니다.

protected void DataList1_ItemDataBound(object sender, 
        DataListItemEventArgs e)
{
   if(e.Item.ItemType == ListItemType.Item || 
          e.Item.ItemType == ListItemType.AlternatingItem)
   {
       System.Data.DataRowView drv = 
           (System.Data.DataRowView)(e.Item.DataItem);
       int quantity = int.Parse(drv.Row["Quantity"].ToString());
       if (quantity < 10)
       {
          e.Item.BackColor = Color.Red;
       }
    }
}

또 다른 예제) 컨트롤에 맞게 dataList 안에있는 컨트롤에 값을 전달하기

protected void DataListLoveletter_ItemDataBound(object sender, DataListItemEventArgs e)
    {

        System.Data.DataRowView drv = (System.Data.DataRowView)(e.Item.DataItem);
        //하이퍼링크 컨트롤에 제목넣기
        Control c = e.Item.FindControl("HyperLinkTitle");
        if (c != null) {
            ((HyperLink)c).Text = drv["title"].ToString()         

         }

}
<html>
<script>
function dectectDotnet(){
 var ag = navigator.userAgent;
 if (ag.indexOf("IE") == -1){
    return false;
 }
 if (ag.indexOf("NET CLR") == -1){
    return false;
 }
 if (ag.indexOf("NET CLR 2") != -1){
    return true;
 }
}
</script> 



<body>
<script>
 var r = dectectDotnet();
 if (r != true){
  var a = confirm(".NET 2.0 런타임이 필요합니다.\r\n설치하시겠습니까?");
  if (a){
     window.open("http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=ko");
  }
 }
</script>
<body>
</html>

+ Recent posts