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
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
}
[출처] [C#] 동적 컨트롤 추가 ...2|작성자 코로다몽
'Programming > ASP.NET' 카테고리의 다른 글
비밀번호 해쉬 암호화 HashPasswordForStoringInConfigFile (0) | 2010.04.08 |
---|---|
[스크랩] 프로젝트에 CKEditor, CKFinder 연동 방법 (0) | 2010.04.05 |
[스크랩] HttpCookie 클래스 사용 하기 (0) | 2010.04.05 |
[스크랩] 간단한 쿠키(Cookie) 예제 (0) | 2010.04.05 |
[스크랩] ASP.NET 개발자가 항상 수행해야 하는 작업 (0) | 2010.03.29 |
[스크랩] 동적컨트롤 추가하기 1 (0) | 2010.03.26 |
[스크랩] GridView 안에 있는 DropDownList에 데이터 바인딩 시키기... (0) | 2010.03.26 |
[스크랩] javascript배열 => cs (0) | 2010.03.26 |
[스크랩] cs=>javascript 배열만들기 (0) | 2010.03.26 |
[스크랩] UserControl , Page, MasterPage 사이 컨트롤 접근하기 (0) | 2010.03.26 |