본문 바로가기
프로그래밍

Create Sea's WorkList (1)

by 이데렐라 2009. 9. 2.
반응형

 으하하하.
다시 나를 불태우게 만드는 Create 작업을 다시 시작하게 되었다.
월요일 업무보고를 하던 중 보고가 아닌 바로 실행이 되어버려 작업리스트는 쭉쭉쭉 완료가 채워진 것이 바로 그 이유!

 테스트만 남은 작업이 있긴 하다만... 정말 말 그대로 테스트 작업은 문제가 언제 나올지도, 너무 완벽해서 문제 따위 생기지 않을지도 모르는 일을 반복하고 있자니 머리가 굳다 못해 뇌가 저릴지경이다.

 원석대리님께서 퇴사하시기 전에 남겨주시고 간 숙제!
Dream Community 의 Promise!

 나의 부족한 업무능력으로 여태 정신없이 일을 했지만 지금은 반복업무(?)를 하고 있는 중이기 때문에 다른 문제가 생기기 이전까지는 Dream Community 의 Promise 부분을 보안하는 작업을 병행하기로 결정내렸음.ㅎㅎ

 내가 고새 성장했단 말인가?
6월달에 진행했던 것이 2개월 지났다고 허접해 보인다.
이전에 계획했던 부분을 기반으로 다시 Create 한 WorkList!
다시 진행을 하는 부분이라서인지 전 보다 빨리 진행되는 듯하다.


페이지 새로 생성.
Create_Page
WorkList.aspx
WorkList.aspx.cs

데이터베이스 테이블.
Create_Table
AC_MEMBER
AC_GROUP
BS_WORK_LIST
BS_CONTENTS_FILES
BS_WORK_STATUS
BS_CONTENTS_TYPE



페이지에 GridView 를 추가했고
WorkList.aspx
<asp:GridView ID="W_List" runat="server" AutoGenerateColumns="False" AllowPaging="True">
<Columns>
<asp:BoundField HeaderText="Shenme1" DataField="FieldName1" />
........etc
</Columns>
</asp:GridView>

위 Column 종류 이외에도 asp:CommandField, asp:ButtonField, asp:CheckBoxField, asp:HyperLinkField, asp:ImageField, asp:TemplateField 가 있으며 CommandField 컨트롤은 편집,삭제 등의 기능을 하는 버튼이다.


이전 처럼 DataSource 컨트롤은 사용하지 않고 cs 에서 페이지를 불러올 때 Binding 하여 GridView 에 List 값을 출력할 것이다.
WorkList.aspx.cs
protected void GridView_Binding()
{
            string conString = ConfigurationManager.ConnectionStrings["ConnectionString_name"].ConnectionString;
            string sql = "ShenmeShenme Query...";
            SqlConnection sc = new SqlConnection(conString);
            sc.Open();
            SqlCommand scm = new SqlCommand(sql, sc);
            SqlDataAdapter SDA = new SqlDataAdapter();
            SDA.SelectCommand = scm;
            DataSet DS = new DataSet();
            SDA.Fill(DS, "List_Select");
            W_List.DataSource = DS.Tables["List_Select"];
            W_List.DataBind();

}

끄~으~읕?    NoNoNoNo!!! 벌써 끝나면 섭하시죠.
세부 사항을 살펴 봅세다.





편집을 하기 위해서 GridView의 Columns의 asp:CommandField 를 추가하였다.
<asp:CommandField HeaderText="편집" ShowEditButton="true" EditText="편집" UpdateText="수정" />


요런 모양새로 촨! 나타났다. 편집을 누르면 SqlDataSource 컨트롤에 적용시킨 부분이 없기 때문에 RowEditing 이벤트 정의가 되어 있지 않아 오류메시지가 출력된다.


그렇담 어떻게 해결해야 할까?
말 그대로 이벤트가 필요한 부분은 이벤트 정의를 해 주고, 내가 원하는 이벤트 실행을 하도록 키를 정성스레 눌러주면 된다.


 이벤트 설정 
 protected void TaskGridView_RowEditing(object sender, GridViewEditEventArgs e)  TaskGridView.EditIndex = e.NewEditIndex;
(발생한 이벤트객체의 인덱스를 주어 해당 Row에 편집을 설정한다.)
 protected void TaskGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)  TaskGridView.EditIndex = -1;
(객체의 편집인덱스의 설정을 해제한다.)
protected void TaskGridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
GridViewRow row = TaskGridView.Rows[e.RowIndex];

dt.Rows[TaskGridView.EditIndex]["Id"] = ((TextBox)(row.Cells[1].Controls[0])).Text;
dt.Rows[TaskGridView.EditIndex]["Description"] = ((TextBox)(row.Cells[2].Controls[0])).Text;
dt.Rows[TaskGridView.EditIndex]["IsComplete"] = ((CheckBox)(row.Cells[3].Controls[0])).Checked;
TaskGridView.EditIndex = -1;
(GridView의 행 객체를 해당객체의 행을 할당하여 값을 편집하고 편집인덱스 설정을 해제한다.)

msdn 참고 :  http://msdn.microsoft.com/ko-kr/library/system.web.ui.webcontrols.gridview.rowediting.aspx



 

반응형

'프로그래밍' 카테고리의 다른 글

Create Sea's WorkList (2)  (0) 2009.09.03

댓글