Visual Studio 2005  - Framework 2.0

(AJAX - 방식 언급 안함, 아이디 찾기 데이타 바인딩 생략...

  동적 컨트롤 추가 및 삭제에 관해서만 소스 기술...)

public partial class _BlockSetting : Syste.Web.UI.Page

{

    protected DataTable DtSource = new DataTable();

   
    protected void Page_Load(object sender, EventArgs e)
    {
        MakeBlockTable();     //  동적 컨트롤 생성을 위해 Repeater 테이블 초기화

        if (IsPostBack)

           SaveBlockData();   //   동적 컨트롤 추가시 기존 데이타 저장

    }

 

    protected void Page_PreRender(object sender, EventArgs e)

    {

        BlockRepeater.DataBind();     // Repeater  블럭 설정 동적 컨트롤에 데이타 바인딩

    }

 

    #region MakeBlockTable

    protected void MakeBlockTable()

    {

        DtSource.Columns.Add(new DataColumn("UserNo", typeof(string)));

        DtSource.Columns.Add(new DataColumn("UserId", typeof(string)));

        DtSource.Columns.Add(new DataColumn("BlockTerm", typeof(string)));

        DtSource.Columns.Add(new DataColumn("BlockReason", typeof(string)));

        DtSource.Columns.Add(new DataColumn("BlockDelete", typeof(string)));

    }

    #endregion

 

    #region SaveBlockData        // 리피터 동적 컨트롤 값 저장

    protected void SaveBlockData()

    {

         DataRow Dr;

   

         foreach (RepeaterItem item in BlockRepeater.Items)

         {

              Dr = DtSource.NewRow();

  

              Dr["UserNo"] = ((TextBox)item.findControl("UserNo")).Text;

              Dr["UserId"] = ((TextBox)item.findControl("UserId")).Text;

              Dr["BlockTerm"] = ((TextBox)item.findControl("blockTerm")).Text;

              Dr["BlockReason"] = ((TextBox)item.findControl("BlockReason")).Text;

              Dr["BlockDelete"] = ((Label)item.FindControl("BlockDelete")).Text;

              DtSource.Rows.Add(Dr);

          }

    }

     #endregion

 

 

    #region ChoiceBtnClick     // 선택링크 클릭 시  (1 참조... 아이디 찾기 후 리스트 선택 클릭 시)

    protected void ChoiceBtnClick(object sender, EventArgs e)

   {

        DataRow Dr = DtSource.NewRow();

        Type t = this.GetType();

   

        string user_no = UserNoHidden.Value.TosString();

        string user_id = UserIdHidden.Value.ToString();

        string AlertMessage = "AlertMessage(\"한번에 5개까지 블럭설정을 할 수 있습니다.\");";

 

        if (DtSource.Rows.Count > 4)    // 리스트가 5개 이상일 때... 선택 불가 메세지 출력

            ScriptManager.RegisterClientScriptBlock(this.Page, t, null, AlertMessage, true);

        else

        {

              if (DtSource.Rows.Count > 0)   // 선택 된 아이디가 있을 시 중복 체크

              {

                   for (int i = 0; i < DtSource.Rows.Count; i++)

                   {

                        TextBox _UserId = (TextBox)BlockRepeater.Items[i].FindControl("UserId");

                        if (_UserId.Text == user_id.ToString())

                        {

                            ScriptManager.RegisterClientScriptBlock(this.Page, t, null, "AlertMessage(\"이미 선택하신 아이디 입니다.\");", true);

                             return;

                         }

                    }

               }

               Dr["UserNo"] = user_no.ToString();

               Dr["UserId"] = user_id.TosString();

               Dr["BlockTerm"] = string.Empty;

               Dr["BlockReason"] = string.Empty;

               Dr["BlockDelete"] = "<a href=\"javascript:Delete_ok('" + user_no.ToString() + "');\">제거</a>";

 

               DtSource.Rows.Add(Dr);

        }

   }

   #endregion

 

 

   #region RemoveBtnClick     // 블럭설정 리스트에서 리스트 제거

   // 순자척으로 삭제를 하고 싶으시면... 여기서 변형만 하시면 금방 하실 수 있습니다.

   // (몇번째 로우열이 아닌... 유저넘버 값으로 비교 후 해당 로우열 삭제 하는 방식

   protected void RemoveBtnClick(object sender, EventArgs e)

   {

        string _DeleteId =  DeleteIdHidden.value.ToString();    // 삭제하고자 하는 유저넘버 값 가져 오기

 

        for (int i = 0; i < BlockRepeater.Items.Count; i++)       // 또는 Blockrepeater.Items.Count  대신  DtSource.Rows.Count

       {

             TextBox _UserNo = (TextBox)BlockRepeater.Items[i].FindControl("UserNo");

 

             if (_UserNo.Text == _DeleteId)

                  DtSource.Rows.RemoveAt(i);

        }

    }

    #endregion

}

+ Recent posts