Programming/.NET

Button은 가장 일반적으로 사용되는 컨트롤이며 주로 폼의 정보전송을 담당합니다.

 주요속성/이벤트

(1) CausesValidation

어떤 페이지에서 입력값에 대한 유효성검사를 수행하는 경우 Button 컨트롤을 클릭하면 포스트백 시도가 걸려 그 즉시 유효성검사를 수행하게 될 것입니다. 만약 특정버튼에서 유효성검사를 하지 않게하려면 이 속성의 값을 false로 설정합니다.

(2) CommandName

여러개의 버튼이 하나의 이벤트로 처리되는 경우 어떤 버튼에서 해당 이벤트를 호출했는지 알 수 있도록 합니다.
<asp:Button ID="Button1" runat="server" Text="Button" OnCommand="Button_Command" CommandName="button1" /><br />
<asp:Button ID="Button2" runat="server" Text="Button" OnCommand="Button_Command" CommandName="button2" />
<코드 1-1>

코드1-1에서 2개버튼의 OnCommand 에 Button_Command 이벤트를 지정하여 버튼을 클릭하면 해당 이벤트가 발생하도록 하였습니다. 이렇게 하면 여러개의 버튼을 묶어 하나의 이벤트를 처리하도록 지정할 수 있습니다. 이때 Button_Command 이벤트 입장에서는 경우에 따라 어떤 버튼이 이벤트를 발생시켰는지 알아야 할 경우가 있습니다. 그럴려면 각각의 버튼에 서로다른 CommandName 값을 지정하고
protected void Button_Command(object sender, CommandEventArgs e)
{
    Response.Write(e.CommandName + "버튼 클릭");
}
<코드 1-2>

이벤트에서는 CommandEventArgs 개체의 CommandName 속성을 사용해 각 버튼의 지정된 CommandName 값을 확인하면 됩니다.

(3) OnClientClick

버튼을 클릭했을때 서버측 코드가 아닌 자바스크립트(javascript)와 같은 클라이언트측 스크립트를 실행하고자 한다면 OnClientClick 에 해당 스크립트를 다음과 같이 지정합니다.
<script type="text/javascript">
    var call_script = function () {
        alert('클릭');
    }
</script>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="call_script()" />
<코드 1-3>

만약 하나의 버튼에 OnClientClick 와 서버코드를 실행시키는 OnClick 이벤트가 같이 지정되었으면 가장 먼저 OnClientClick 부분이 처리됩니다. 이 순서는 바꿀 수 없으므로 만약 OnClick를 먼저 실행하고 그 뒤 클라이언트 스크립트를 실행해야 한다면 OnClick 안에서 스크립트를 호출하도록 해야 합니다.

다만 OnClientClick 가 실행되고 경우에 따라 OnClick 는 실행되지 않도록 지정할 수 있는데 그렇게 하려면 OnClientClick 처리결과를 다음과 같이 false로 반환하도록 하면 됩니다.
var call_script = function () {
    if (confirm('실행할까요?'))
        return true;
    else
        return false;
}
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return call_script()" OnClick="Button1_Click" />

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return confirm('실행할까요?')" OnClick="Button1_Click" />
<코드 1-4>

이때 OnClientClick 에는 스크립트의 결과를 받을 수 있도록 return 붙여줍니다.
0 0