이전에 리스트 페이지 만들때, "MemberEntry.aspx" 로 링크 되게 만들어져 있음.
파라메터로 "SMODE", "USER_ID" 를 전달하게 되어 있음.
하지만, 데이터 조회 기능이 구현되어 있지 않으므로 페이지로 가봐도 빈 페이지만 나옴.
그러니 기능을 구현해야 하는데, 일단 이전 페이지에서 전달한 파라메터를 받아 와야함.
"MemberEntry" 페이지에 public 변수를 선언.
물론, 저렇게 굳이 ViewState 에 저장하지 않아도 되지만, ViewState 에 저장하지 않으면, PostBack 이벤트 발생시마다 계속 파라메타 값을 읽어와야함.
암튼, 그 후에 getRequest() 라는 함수를 만들어 파라메타 값을 읽어오는 기능을 구현.
그리고, 읽어온 파라메타 중 "SMODE" 값을 기준으로 사용자 등록 기능인지, 사용자 수정 기능인지를 판단함.
사용자 수정 기능이면, getUserInfo(); 를 호출
나중에 읽어온 값을 각 텍스트박스에 넣어주는것 빼고는, 그냥 사용자 등록과 거의 같음.
그냥 "MemberBiz" 를 선언하고, Info() 를 호출.
그러기 위해서는 "MemberBiz" 에 Info() 기능을 추가해놔야 함.
당연히 쿼리도 하나 만들어야 하고...
이대로 제대로 진행 되었다면, 조금전 사용자 페이지를 새로 고침하면...
이렇게 현재 지정된 아이디의 정보를 불러옴.
그리고, 수정 버튼에 이벤트를 등록하고, 업데이트를 수행.
보시다시피 사용자 등록과 거의 똑같음. 그냥 Biz 단에 "Update" 라는 로직을 추가 해서 호출 할 뿐.
[MeberBiz.cs]
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; using Site.FrameWork; using Site.FrameWork.BaseClass; using Site.FrameWork.Common; namespace Site.Biz { public class MemberBiz : BizBase { // User 데이터 public struct MemInfo { public int intNum; public string strLoginID; public string strGroup; public string strLoginPwd; public string strLoginName; public string strEmail; public string strBirthday; public string strHomePost; public string strHomeAddr1; public string strHomeAddr2; public string strHomeTel; public string strMobile; public int intVisit; public string strSignIP; public string dateSignDate; public string strRegID; public string dateRegDate; public string strModID; public string dateModDate; } // 검색 데이터 public struct MemSearch { public int pageIndex; public int pageSize; public string strLoginID; public string strGroup; public string strLoginName; } public cReturnValue.bReturnValue Insert(MemInfo ro) { cReturnValue.bReturnValue bReVal = new cReturnValue.bReturnValue(); bReVal.Result = true; bReVal.Message = ""; string setQuery = string.Empty; try { DBCon(); // DB 커넥션 생성 // item 등록 setQuery = "P_MEMBER_MemberInfo_INSERT01"; SqlParameter[] sqlParams = { new SqlParameter("strLoginID", SqlDbType.VarChar, 200), new SqlParameter("strGroup", SqlDbType.Char, 4), new SqlParameter("strLoginPwd", SqlDbType.VarChar, 20), new SqlParameter("strLoginName", SqlDbType.VarChar, 20), new SqlParameter("strEmail", SqlDbType.VarChar, 64), new SqlParameter("strBirthday", SqlDbType.VarChar, 9), new SqlParameter("strHomePost", SqlDbType.VarChar, 6), new SqlParameter("strHomeAddr1", SqlDbType.VarChar, 64), new SqlParameter("strHomeAddr2", SqlDbType.VarChar, 64), new SqlParameter("strHomeTel", SqlDbType.VarChar, 14), new SqlParameter("strMobile", SqlDbType.VarChar, 13), new SqlParameter("intVisit", SqlDbType.Int), new SqlParameter("strSignIP", SqlDbType.VarChar, 15), new SqlParameter("dateSignDate", SqlDbType.VarChar, 128), new SqlParameter("strRegID", SqlDbType.VarChar, 200), new SqlParameter("dateRegDate", SqlDbType.VarChar, 128), new SqlParameter("strModID", SqlDbType.VarChar, 200), new SqlParameter("dateModDate", SqlDbType.VarChar, 128) }; sqlParams[0].Value = ro.strLoginID; sqlParams[1].Value = ro.strGroup; sqlParams[2].Value = ro.strLoginPwd; sqlParams[3].Value = ro.strLoginName; sqlParams[4].Value = ro.strEmail; sqlParams[5].Value = ro.strBirthday; sqlParams[6].Value = ro.strHomePost; sqlParams[7].Value = ro.strHomeAddr1; sqlParams[8].Value = ro.strHomeAddr2; sqlParams[9].Value = ro.strHomeTel; sqlParams[10].Value = ro.strMobile; sqlParams[11].Value = ro.intVisit; sqlParams[12].Value = ro.strSignIP; sqlParams[13].Value = ro.dateSignDate; sqlParams[14].Value = ro.strRegID; sqlParams[15].Value = ro.dateRegDate; sqlParams[16].Value = ro.strModID; sqlParams[17].Value = ro.dateModDate; cReturnValue.iReturnValue iReVal = new cReturnValue.iReturnValue(); iReVal.Result = -1; iReVal.Message = ""; iReVal = ExecuteNonQuery(CommandType.StoredProcedure, setQuery, sqlParams); if (iReVal.Result < 1) // Error !! { bReVal.Message = iReVal.Message; bReVal.Result = false; return bReVal; } return bReVal; } catch (Exception ex) { bReVal.Message = ex.Message; bReVal.Result = false; return bReVal; } } public cReturnValue.bReturnValue Update(MemInfo ro) { cReturnValue.bReturnValue bReVal = new cReturnValue.bReturnValue(); bReVal.Result = true; bReVal.Message = ""; string setQuery = string.Empty; try { DBCon(); // DB 커넥션 생성 // item 등록 setQuery = "P_MEMBER_MemberInfo_UPDATE01"; SqlParameter[] sqlParams = { new SqlParameter("strLoginID", SqlDbType.VarChar, 200), new SqlParameter("strGroup", SqlDbType.Char, 4), new SqlParameter("strLoginPwd", SqlDbType.VarChar, 20), new SqlParameter("strLoginName", SqlDbType.VarChar, 20), new SqlParameter("strEmail", SqlDbType.VarChar, 64), new SqlParameter("strBirthday", SqlDbType.VarChar, 9), new SqlParameter("strHomePost", SqlDbType.VarChar, 6), new SqlParameter("strHomeAddr1", SqlDbType.VarChar, 64), new SqlParameter("strHomeAddr2", SqlDbType.VarChar, 64), new SqlParameter("strHomeTel", SqlDbType.VarChar, 14), new SqlParameter("strMobile", SqlDbType.VarChar, 13), new SqlParameter("intVisit", SqlDbType.Int), new SqlParameter("strSignIP", SqlDbType.VarChar, 15), new SqlParameter("dateSignDate", SqlDbType.VarChar, 128), new SqlParameter("strRegID", SqlDbType.VarChar, 200), new SqlParameter("dateRegDate", SqlDbType.VarChar, 128), new SqlParameter("strModID", SqlDbType.VarChar, 200), new SqlParameter("dateModDate", SqlDbType.VarChar, 128) }; sqlParams[0].Value = ro.strLoginID; sqlParams[1].Value = ro.strGroup; sqlParams[2].Value = ro.strLoginPwd; sqlParams[3].Value = ro.strLoginName; sqlParams[4].Value = ro.strEmail; sqlParams[5].Value = ro.strBirthday; sqlParams[6].Value = ro.strHomePost; sqlParams[7].Value = ro.strHomeAddr1; sqlParams[8].Value = ro.strHomeAddr2; sqlParams[9].Value = ro.strHomeTel; sqlParams[10].Value = ro.strMobile; sqlParams[11].Value = ro.intVisit; sqlParams[12].Value = ro.strSignIP; sqlParams[13].Value = ro.dateSignDate; sqlParams[14].Value = ro.strRegID; sqlParams[15].Value = ro.dateRegDate; sqlParams[16].Value = ro.strModID; sqlParams[17].Value = ro.dateModDate; cReturnValue.iReturnValue iReVal = new cReturnValue.iReturnValue(); iReVal.Result = -1; iReVal.Message = ""; iReVal = ExecuteNonQuery(CommandType.StoredProcedure, setQuery, sqlParams); if (iReVal.Result < 1) // Error !! { bReVal.Message = iReVal.Message; bReVal.Result = false; return bReVal; } return bReVal; } catch (Exception ex) { bReVal.Message = ex.Message; bReVal.Result = false; return bReVal; } } public cReturnValue.dsReturnValue List(MemSearch ro) { cReturnValue.dsReturnValue dsReVal = new cReturnValue.dsReturnValue(); dsReVal.Result = 0; dsReVal.Data = null; dsReVal.Message = ""; string setQuery = "P_MEMBER_MemberList_SELECT01"; try { DBCon(); // DB 커넥션 생성 SqlParameter[] sqlParams = { new SqlParameter("intPageIndex", SqlDbType.Int), new SqlParameter("intPageSize", SqlDbType.Int), new SqlParameter("strLoginID", SqlDbType.VarChar, 200), new SqlParameter("strLoginName", SqlDbType.VarChar, 20), new SqlParameter("strGroup", SqlDbType.VarChar, 20) }; sqlParams[0].Value = (ro.pageIndex - 1) * ro.pageSize; sqlParams[1].Value = ro.pageSize; sqlParams[2].Value = ro.strLoginID; sqlParams[3].Value = ro.strLoginName; sqlParams[4].Value = ro.strGroup; dsReVal = ExecuteDataSet(CommandType.StoredProcedure, setQuery, sqlParams); return dsReVal; } catch (Exception ex) { dsReVal.Message = ex.Message; dsReVal.Result = -1; return dsReVal; } } public cReturnValue.dsReturnValue Info(MemSearch ro) { cReturnValue.dsReturnValue dsReVal = new cReturnValue.dsReturnValue(); dsReVal.Result = 0; dsReVal.Data = null; dsReVal.Message = ""; string setQuery = "P_MEMBER_MemberInfo_SELECT01"; try { DBCon(); SqlParameter[] sqlParams = { new SqlParameter("strLoginID", SqlDbType.VarChar, 200) }; sqlParams[0].Value = ro.strLoginID; dsReVal = ExecuteDataSet(CommandType.StoredProcedure, setQuery, sqlParams); return dsReVal; } catch (Exception ex) { dsReVal.Message = ex.Message; dsReVal.Result = -1; return dsReVal; } } } }[P_MEMBER_MemberInfo_UPDATE01.sql]
IF (OBJECT_ID ('[dbo].[P_MEMBER_MemberInfo_UPDATE01]', 'P') IS NOT NULL) BEGIN DROP PROCEDURE [dbo].[P_MEMBER_MemberInfo_UPDATE01]; END GO /* ** Description: 업체 정보를 수정한다. ** Author: Son10001 ** Create date: 2015-07-15 ** Sample: Exec [P_MEMBER_MemberInfo_UPDATE01] */ CREATE PROCEDURE [dbo].[P_MEMBER_MemberInfo_UPDATE01] ( @strLoginID Varchar(128), @strGroup Varchar(128), @strLoginPwd Varchar(128), @strLoginName Varchar(128), @strEmail Varchar(128), @strBirthday Varchar(128), @strHomePost Varchar(128), @strHomeAddr1 Varchar(128), @strHomeAddr2 Varchar(128), @strHomeTel Varchar(128), @strMobile Varchar(128), @intVisit int, @strSignIP Varchar(128), @dateSignDate Varchar(128), @strRegID Varchar(128), @dateRegDate Varchar(128), @strModID Varchar(128), @dateModDate Varchar(128) ) AS UPDATE T_MEMBER_LIST SET strGroup = @strGroup, strLoginPwd = case @strLoginPwd when '' then strLoginPwd else @strLoginPwd end, strLoginName = @strLoginName, strEmail = @strEmail, strBirthday = @strBirthday, strHomePost = @strHomePost, strHomeAddr1 = @strHomeAddr1, strHomeAddr2 = @strHomeAddr2, strHomeTel = @strHomeTel, strMobile = @strMobile, intVisit = case @intVisit when '' then intVisit else @intVisit end, strSignIP = case @strSignIP when '' then strSignIP else @strSignIP end WHERE strLoginID = @strLoginID
이렇게 소스를 추가함.
이렇게 변경하고...
비밀번호 값을 변경하고, "Update" 버튼을 클릭해 데이터를 변경.
DB 에 잘 반영되어 있음.
그러고 보니 비밀번호가 그냥 노출되는데... 이걸 막을려면...
해당 텍스트 박스의 속성에 "TextMode" 를 "Password" 로 지정.
그러면 패스워드가 노출되지 않음.