반응형
aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="CRUD.WebForm1" EnableEventValidation="false" %>
<!--/ 페이지 지시문 -->
<!DOCTYPE html>
<!-- 스크립트가 있다면 내부 로직을 처리하는 부분임 -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<style type="text/css">
* {
padding: 0;
margin: 0;
}
.header_name {
margin: 10px;
width: 60px;
text-align: right;
font-size: 12px;
font-weight: 600;
}
.test_textbox {
width: 120px;
height: 20px;
margin: 2px;
font-size: 1px;
position: relative;
top: 2px;
border-radius: 4px;
}
.test_dropDownList {
width: 120px;
height: 20px;
margin: 2px;
font-size: 13px;
position: relative;
top: 2px;
border-radius: 4px;
}
#buttons {
position: relative;
left: 322px;
}
.centered {
position: relative;
left: 50%;
transform: translateX(-50%);
}
.btn_op {
height: 25px;
}
</style>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<%--스크립트매니저--%>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True">
</asp:ScriptManager>
<div class="container">
<label class="header_name">사번</label>
<asp:TextBox CssClass="test_textbox" ID="사번" runat="server" ReadOnly="true"></asp:TextBox>
<div class="row">
<div class="col-4">
<label class="header_name">성명</label>
<asp:TextBox CssClass="test_textbox" ID="성명" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="체크_성명" runat="server"
ControlToValidate="성명" ErrorMessage="성명을 정확히 입력해야합니다."
ValidationExpression="^[기-힣]{1,4}$" Font-Size="10px" ValidationGroup="jumin"></asp:RegularExpressionValidator>
</div>
<div class="col-4">
<label class="header_name">주민번호</label>
<asp:TextBox CssClass="test_textbox" ID="주민번호앞" runat="server" Style="width: 45px;" />
<label>-</label>
<asp:TextBox CssClass="test_textbox" ID="주민번호뒤" runat="server" Style="width: 55px;" />
<asp:RegularExpressionValidator ID="체크_주민_앞" runat="server"
ControlToValidate="주민번호앞" ErrorMessage="주민등록번호 앞자리 입력 오류"
ValidationExpression="^[0-9]{6}$" Font-Size="10px" ValidationGroup="jumin"></asp:RegularExpressionValidator>
<asp:RegularExpressionValidator ID="체크_주민_뒤" runat="server"
ControlToValidate="주민번호뒤" ErrorMessage="주민등록번호 뒷자리 입력 오류"
ValidationExpression="^[0-9]{7}$" Font-Size="10px" ValidationGroup="jumin"></asp:RegularExpressionValidator>
<asp:ValidationSummary ID="validationSummary" runat="server" ValidationGroup="jumin" />
</div>
</div>
<div class="row">
<div class="col-4">
<label class="header_name">이메일 </label>
<asp:TextBox CssClass="test_textbox" ID="이메일" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="체크_이메일" runat="server"
ControlToValidate="이메일" ErrorMessage="올바른 이메일 형식이 아닙니다."
ValidationExpression="^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" Font-Size="10px"></asp:RegularExpressionValidator>
</div>
<div class="col-4">
<label class="header_name">전화번호 </label>
<asp:TextBox CssClass="test_textbox" ID="전화번호" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="체크_전화번호" runat="server"
ControlToValidate="전화번호" ErrorMessage="올바른 전화번호 형식이 아닙니다."
ValidationExpression="^[0-9]+$" Font-Size="10px"></asp:RegularExpressionValidator>
</div>
</div>
<div class="row">
<div class="col-8">
<label class="header_name">주소</label>
<asp:TextBox CssClass="test_textbox" ID="우편번호" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="우편번호_체크" runat="server"
ControlToValidate="우편번호" ErrorMessage="우편번호 형식 오류"
ValidationExpression="^[0-9]{5,6}$" Font-Size="10px" ValidationGroup="jumin"></asp:RegularExpressionValidator>
<asp:TextBox CssClass="test_textbox" Style="margin-left: 10px; width: 238px;" ID="주소" runat="server"></asp:TextBox>
</div>
</div>
<div class="row">
<div class="col-4">
<label class="header_name">부서 </label>
<asp:DropDownList CssClass="test_dropDownList" ID="부서" runat="server">
<asp:ListItem Text="--선택--" Value="none" />
<asp:ListItem Text="경영관리부" Value="경영관리부" />
<asp:ListItem Text="개발1팀" Value="개발1팀" />
<asp:ListItem Text="개발2팀" Value="개발2팀" />
<asp:ListItem Text="개발3팀" Value="개발3팀" />
<asp:ListItem Text="개발4팀" Value="개발4팀" />
<asp:ListItem Text="디자인팀" Value="디자인팀" />
<asp:ListItem Text="영업팀" Value="영업팀" />
<asp:ListItem Text="유지보수팀" Value="유지보수팀" />
</asp:DropDownList>
<%-- <asp:RequiredFieldValidator ID="체크_부서" Text="<br/>부서 입력 오류" InitialValue="none" ControlToValidate="부서" runat="server" Font-Size="10px" />--%>
</div>
<div class="col-4">
<label class="header_name">직위 </label>
<asp:DropDownList CssClass="test_dropDownList" ID="직위" runat="server">
<asp:ListItem Text="--선택--" Value="none" />
<asp:ListItem Text="대표이사" Value="대표이사" />
<asp:ListItem Text="상무" Value="상무" />
<asp:ListItem Text="이사" Value="이사" />
<asp:ListItem Text="부장" Value="부장" />
<asp:ListItem Text="차장" Value="차장" />
<asp:ListItem Text="과장" Value="과장" />
<asp:ListItem Text="대리" Value="대리" />
<asp:ListItem Text="사원" Value="사원" />
<asp:ListItem Text="인턴" Value="인턴" />
</asp:DropDownList>
<%-- <asp:RequiredFieldValidator ID="체크_직위" Text="<br/>직위 입력 오류" InitialValue="none" ControlToValidate="부서" runat="server" Font-Size="10px" />--%>
</div>
</div>
</div>
<div id="buttons" class="container">
<asp:Button ID="버튼_테스트" class="btn btn-primary btn_op" runat="server" Text="테스트" OnClientClick="ScriptManagerTest()" Style="padding: 2px; width: 50px; font-size: 13px;"></asp:Button>
<asp:Button class="btn btn-primary btn_op" runat="server" Text="신규" OnClick="버튼_신규" Style="padding: 2px; width: 50px; font-size: 13px;"></asp:Button>
<asp:Button class="btn btn-success btn_op" runat="server" Text="저장" OnClick="버튼_저장" Style="padding: 2px; width: 50px; font-size: 13px;"></asp:Button>
<asp:Button class="btn btn-danger btn_op" runat="server" Text="삭제" OnClick="버튼_삭제" Style="padding: 2px; width: 50px; font-size: 13px;"></asp:Button>
</div>
<script type="text/javascript">
function ScriptManagerTest() {
alert(PageMethods.HelloWorld());
};
</script>
<%--그리드뷰--%>
<div class="container pt-3 my-3">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Width="484px" CellPadding="4" ForeColor="#333333" GridLines="None" Height="190px" OnRowCommand="GridView1_RowCommand">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<%--<asp:BoundField DataField="사번" HeaderText="사번" InsertVisible="False" ReadOnly="True" SortExpression="사번" ItemStyle-Width="50">
<ItemStyle Width="50px"></ItemStyle>
</asp:BoundField>--%>
<asp:TemplateField HeaderText="사번" ValidateRequestMode="Disabled">
<ItemTemplate>
<asp:LinkButton runat="server" CommandName="ITEM" CommandArgument='<%# Eval("사번") %>'><%# Eval("사번") %></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="성명" HeaderText="성명" SortExpression="성명" />
<asp:BoundField DataField="주민번호" HeaderText="주민번호" SortExpression="주민번호" />
<asp:BoundField DataField="부서" HeaderText="부서" SortExpression="부서" />
<asp:BoundField DataField="직위" HeaderText="직위" SortExpression="직위" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:TEST_LJHConnectionString %>" SelectCommand="SELECT [사번], [성명], [주민번호], [부서], [직위] FROM [회원관리]"></asp:SqlDataSource>
</div>
<%--그리드뷰--%>
</form>
<script type="text/javascript">
$(document).ready(function () {
$('#<%= 버튼_테스트.ClientID %>').on('click', function () {
});
});
</script>
</body>
</html>
aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Data;
using System.Web.Services;
//웹 폼 작성시 주로 사용되는 기본적인 네임스페이스 -> 웹 폼 생성 시 자동으로 선언됨
namespace CRUD
{
public partial class WebForm1 : System.Web.UI.Page //파일이름의 클래스로 선언됨
{
//전역변수 시작 ------------------------------------------------------
//DB 연결 주소
string source = @"Server=192.168.10.155;" +
"uid=test_idino;" +
"pwd=idino@12;" +
"database=TEST_LJH";
string 선택된사번;
string 주민번호;
String sql;
//----------------------------------------------------------전역변수 끝
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
}
}
//데이터 출력하기 - SELECT
protected void 버튼_출력(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(source);
sql = "SELECT * FROM 회원관리";
try
{
// DB연결
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
// 커서기능? 데이터를 읽기위한 리더 생성
SqlDataReader reader = cmd.ExecuteReader();
//데이터 출력이 정상적으로 되는지 테스트하기 위한 테이블 생성
Response.Write("<Table border=1>");
//데이터 읽기 -> 테이블에 데이터 입력
while (reader.Read())
{
Response.Write("<tr>");
for (int i = 0; i < reader.FieldCount; i++)
{
Response.Write("<td>" + reader[i] + "</td>");
}
Response.Write("</tr>");
}
Response.Write("</table>");
reader.Close();
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
finally
{
//DB 연결 해제
conn.Close();
GridView1.DataBind();
}
}//End Of Method : Output_Test
// 값 초기화
protected void 버튼_신규(object sender, EventArgs e)
{
사번.Text = "";
성명.Text = "";
주민번호앞.Text = "";
주민번호뒤.Text = "";
이메일.Text = "";
전화번호.Text = "";
우편번호.Text = "";
주소.Text = "";
부서.SelectedIndex = 0;
직위.SelectedIndex = 0;
}//End Of Method : Insert_Test
//데이터 입력 및 수정 (INSERT,UPDATE)
protected void 버튼_저장(object sender, EventArgs e)
{
if (Page.IsValid == true)
{
bool _주민_체크 = false;
bool _주민_체크_앞 = false;
bool _주민_체크_뒤 = false;
bool _직위_체크 = false;
bool _부서_체크 = false;
bool _성명_체크 = false;
//성명체크
if (성명.Text != "")
{
_성명_체크 = true;
}
else
{
Response.Write("성명 공백 <br/>");
}
if (주민번호앞.Text == "")
{
Response.Write("주민등록 앞번호 공백 <br/>");
}
else
{
_주민_체크_앞 = true;
}//주민등록번호 앞자리 체크
if (주민번호뒤.Text == "")
{
Response.Write("주민등록 뒷번호 공백 <br/>");
}
else
{
_주민_체크_뒤 = true;
}//주민등록번호 뒷자리 체크
if(_주민_체크_앞 == true && _주민_체크_뒤 == true)
{
_주민_체크 = true;
}//주민등록번호 앞자리와 뒷자리가 공백이 아닐 때 _주민_체크 값 true
//직위체크
if(직위.SelectedValue != "none")
{
_직위_체크 = true;
}else
{
Response.Write("직위 선택 안됨 <br/>");
}
//부서체크
if (부서.SelectedValue != "none")
{
_부서_체크 = true;
}else
{
Response.Write("부서 선택 안됨 <br/>");
}
if (_성명_체크 && _주민_체크 && _직위_체크 && _부서_체크 )
{
SqlConnection conn = new SqlConnection(source);
if (사번.Text == null || 사번.Text == "")
{
sql =
"INSERT INTO 회원관리 " +
"(성명" +
",주민번호" +
",성별" +
",이메일" +
",전화번호" +
",우편번호" +
",주소" +
",부서" +
",직위) " +
"VALUES " +
"(@성명" +
",@주민번호" +
",@성별" +
",@이메일" +
",@전화번호" +
",@우편번호" +
",@주소" +
",@부서" +
",@직위)";
}
else
{
sql = "UPDATE 회원관리 " +
"SET 성명 = @성명 " +
",주민번호 = @주민번호 " +
",성별 = @성별 " +
",이메일 = @이메일 " +
",우편번호 = @우편번호 " +
",전화번호 = @전화번호 " +
",주소 = @주소 " +
",부서 = @부서 " +
",직위 = @직위 " +
"WHERE 사번 = @사번";
}
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@성명", 성명.Text);
cmd.Parameters.AddWithValue("@주민번호", 주민번호앞.Text + 주민번호뒤.Text);
if (주민번호뒤.Text != "")
{
cmd.Parameters.AddWithValue("@성별", 주민번호뒤.Text.Substring(0, 1));
}
cmd.Parameters.AddWithValue("@이메일", 이메일.Text);
cmd.Parameters.AddWithValue("@우편번호", 우편번호.Text);
cmd.Parameters.AddWithValue("@전화번호", 전화번호.Text);
cmd.Parameters.AddWithValue("@주소", 주소.Text);
cmd.Parameters.AddWithValue("@부서", 부서.Text);
cmd.Parameters.AddWithValue("@직위", 직위.Text);
if (사번.Text != null || 사번.Text != "")
{
cmd.Parameters.AddWithValue("@사번", 사번.Text);
}
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception exception)
{
System.Diagnostics.Trace.WriteLine(exception);
}
finally
{
//DB 연결 해제
conn.Close();
GridView1.DataBind();
}
}
}
}//End Of Method : Update_Test
//사번으로 데이터 삭제하기 - DELETE
protected void 버튼_삭제(object sender, EventArgs e)
{
//사번을 기준으로 데이터를 삭제하므로 사번값이 null 이라면 실행 할 필요없음.
if (사번.Text != null)
{
//Connetion 객체 생성 for DB 연결
SqlConnection conn = new SqlConnection(source);
// DB와 통신이 이루어지므로 try문 사용
try
{
// DB에 요청할 쿼리 - 사번으로 데이터 삭제
String sql = "DELETE " +
"FROM 회원관리 " +
"WHERE 사번 = @사번";
SqlCommand cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddWithValue("@사번", 사번.Text);
// DB연결, 쿼리수행
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception exception)
{
System.Diagnostics.Trace.WriteLine(exception);
}
finally
{
conn.Close();
GridView1.DataBind();
}
}
}//End Of Method : Delete_Test
//그리드뷰 로우 셋팅
//그리드뷰를 선택 가능하도록 설정??
//protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
//{
// if (e.Row.RowType == DataControlRowType.DataRow)
// {
// e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Select$" + e.Row.RowIndex);
// e.Row.Attributes["style"] = "cursor:pointer";
// }
//}
//End Of Method : GridView1_RowDataBound
//그리드뷰 이벤트
//그리드뷰에서 선택된 로우값의 변화를 감지한 뒤 명령을 실행한다.
protected void 링크_테스트(object sender, EventArgs e)
{
//Connetion 객체 생성 for DB 연결
SqlConnection conn = new SqlConnection(source);
//그리드뷰에서 선택된 ROW의 첫번째 셀, 사번을 가지고 온다.
선택된사번 = GridView1.SelectedRow.Cells[0].Text;
사번.Text = 선택된사번;
// DB에 요청할 쿼리
String sql = "SELECT * FROM 회원관리 WHERE 사번 = " + 선택된사번;
// DB와 통신이 이루어지므로 try문 사용
try
{
// DB연결, 쿼리수행
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
// 커서기능? 데이터를 읽기위한 리더 생성
SqlDataReader reader = cmd.ExecuteReader();
//데이터 읽기 -> 입력폼에 읽어들인 데이터 입력
while (reader.Read())
{
성명.Text = String.Format("{0}", reader["성명"]);
주민번호 = String.Format("{0}", reader["주민번호"]);
이메일.Text = String.Format("{0}", reader["이메일"]);
우편번호.Text = String.Format("{0}", reader["우편번호"]);
주소.Text = String.Format("{0}", reader["주소"]);
전화번호.Text = String.Format("{0}", reader["전화번호"]);
부서.SelectedValue = String.Format("{0}", reader["부서"]);
직위.SelectedValue = String.Format("{0}", reader["직위"]);
}
//주민등록번호 앞뒤 나눠서 입력
주민번호앞.Text = 주민번호.Substring(0, 6);
주민번호뒤.Text = 주민번호.Substring(6);
//리더 종료
reader.Close();
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
finally
{
//DB 연결 해제
conn.Close();
}
}//End Of Method : GridView1_SelectedIndexChanged
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if(e.CommandName == "ITEM")
{
//Connetion 객체 생성 for DB 연결
SqlConnection conn = new SqlConnection(source);
//그리드뷰에서 선택된 ROW의 첫번째 셀, 사번을 가지고 온다.
선택된사번 = e.CommandArgument.ToString();
사번.Text = 선택된사번;
// DB에 요청할 쿼리
String sql = "SELECT * FROM 회원관리 WHERE 사번 = " + 선택된사번;
// DB와 통신이 이루어지므로 try문 사용
try
{
// DB연결, 쿼리수행
conn.Open();
SqlCommand cmd = new SqlCommand(sql, conn);
// 커서기능? 데이터를 읽기위한 리더 생성
SqlDataReader reader = cmd.ExecuteReader();
//데이터 읽기 -> 입력폼에 읽어들인 데이터 입력
while (reader.Read())
{
성명.Text = String.Format("{0}", reader["성명"]);
주민번호 = String.Format("{0}", reader["주민번호"]);
이메일.Text = String.Format("{0}", reader["이메일"]);
우편번호.Text = String.Format("{0}", reader["우편번호"]);
주소.Text = String.Format("{0}", reader["주소"]);
전화번호.Text = String.Format("{0}", reader["전화번호"]);
부서.SelectedValue = String.Format("{0}", reader["부서"]);
직위.SelectedValue = String.Format("{0}", reader["직위"]);
}
//주민등록번호 앞뒤 나눠서 입력
주민번호앞.Text = 주민번호.Substring(0, 6);
주민번호뒤.Text = 주민번호.Substring(6);
//리더 종료
reader.Close();
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
finally
{
//DB 연결 해제
conn.Close();
}
}
}
//테스트 코드 자바스크립트 -> C# 함수호출
[WebMethod]
public static string HelloWorld()
{
return "hello";
}
public void 버튼_테스트(object sender, GridViewEditEventArgs e)
{
}
}//End Of Class : WebForm1
}
페이지에서 유효성 검사를 하고 필수 항목은 서버단에서 체크를 하도록 만들었음
다음 목표 --> 페이지에서 스크립트를 생성하여 유효성 검사를 마치고 서버로 접근하도록 변경하기
'정리' 카테고리의 다른 글
ASP.NET - MSSQL 연동 (with Web.Config) (0) | 2020.03.17 |
---|---|
ASP.NET에서 JavaScript로 C# 함수 호출하기 (0) | 2020.03.16 |
GRIDVIEW.DataBind() (0) | 2020.03.12 |
이메일 정규표현식 (0) | 2020.03.12 |
DATABASE 연동 ASP.NET, MS-SQL (0) | 2020.03.11 |