나는 리피터가 있으며 각 항목에는 확인란과 라디오 버튼이 있습니다. (다시 자동 게시물)을 선택하면 포스트 백이있는 리피터
- 체크 박스는
- 라디오 버튼을 한 번 (다시 또한 자동 게시물) 확인 팝업을 표시 항목 내부의 모든 컨트롤을 비활성화합니다.
사례 : 리피터의 항목에 라디오 버튼이 선택되어있는 경우 체크 박스 컨트롤을 선택하여 항목을 사용 중지하면 팝업이 표시됩니다. 다시 게시하는 동안 라디오 버튼이 선택되면 팝업이 표시됩니다.
어떻게 방지 할 수 있습니까? 확인란은 팝업을 표시하지 않도록 항목을 비활성화해야합니다.
내 코드
protected void Page_Load(object sender, EventArgs e)
{
}
protected void rptr1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
Label lbl1 = (Label)e.Item.FindControl("lbl_dg_task");
Label lbl2 = (Label)e.Item.FindControl("lbl_dg_seq");
CheckBox chb = (CheckBox)e.Item.FindControl("chkb_NO");
RadioButton l1 = (RadioButton)e.Item.FindControl("L1");
RadioButton l2 = (RadioButton)e.Item.FindControl("L2");
RadioButton l3 = (RadioButton)e.Item.FindControl("L3");
RadioButton l4 = (RadioButton)e.Item.FindControl("L4");
RadioButton r1 = (RadioButton)e.Item.FindControl("R1");
RadioButton r2 = (RadioButton)e.Item.FindControl("R2");
RadioButton r3 = (RadioButton)e.Item.FindControl("R3");
RadioButton r4 = (RadioButton)e.Item.FindControl("R4");
AjaxControlToolkit.ModalPopupExtender mpex = (AjaxControlToolkit.ModalPopupExtender)e.Item.FindControl("mpe1");
if (l1.Checked)
{
//pop.Enabled = true;
ModalPopupExtender1.Show();
}
if (chb.Checked == true)
{
l1.Enabled = false;
l2.Enabled = false;
l3.Enabled = false;
l4.Enabled = false;
r1.Enabled = false;
r2.Enabled = false;
r3.Enabled = false;
r4.Enabled = false;
lbl1.CssClass = "grayedout";
lbl2.CssClass = "grayedout";
}
else
{
l1.Enabled = true;
l2.Enabled = true;
l3.Enabled = true;
l4.Enabled = true;
r1.Enabled = true;
r2.Enabled = true;
r3.Enabled = true;
r4.Enabled = true;
lbl1.CssClass = "seq";
lbl2.CssClass = "task";
}
}
}
protected void rptr1_PreRender(object sender, EventArgs e)
{
foreach (RepeaterItem item in rptr1.Items)
{
if (item.ItemType == ListItemType.AlternatingItem || item.ItemType == ListItemType.Item)
{
CheckBox chb = (CheckBox)item.FindControl("chkb_NO");
Label lbl1 = (Label)item.FindControl("lbl_dg_task");
Label lbl2 = (Label)item.FindControl("lbl_dg_seq");
RadioButton l1 = (RadioButton)item.FindControl("L1");
RadioButton l2 = (RadioButton)item.FindControl("L2");
RadioButton l3 = (RadioButton)item.FindControl("L3");
RadioButton l4 = (RadioButton)item.FindControl("L4");
RadioButton r1 = (RadioButton)item.FindControl("R1");
RadioButton r2 = (RadioButton)item.FindControl("R2");
RadioButton r3 = (RadioButton)item.FindControl("R3");
RadioButton r4 = (RadioButton)item.FindControl("R4");
AjaxControlToolkit.ModalPopupExtender mpex = (AjaxControlToolkit.ModalPopupExtender)item.FindControl("ModalPopupExtender1");
if (chb.Checked == true)
{
l1.Enabled = false;
l2.Enabled = false;
l3.Enabled = false;
l4.Enabled = false;
r1.Enabled = false;
r2.Enabled = false;
r3.Enabled = false;
r4.Enabled = false;
l1.Checked = false;
lbl1.CssClass = "grayedout";
lbl2.CssClass = "grayedout";
}
else
{
l1.Enabled = true;
l2.Enabled = true;
l3.Enabled = true;
l4.Enabled = true;
r1.Enabled = true;
r2.Enabled = true;
r3.Enabled = true;
r4.Enabled = true;
lbl1.CssClass = "seq";
lbl2.CssClass = "task";
}
if (l1.Checked)
{
//pop.Enabled = true;
ModalPopupExtender1.Show();
}
}
}
}
이벤트는 의도 한대로 사용해야합니다. ItemDataBound는 표시되기 전에 데이터를 조작하고, PreRender는 이벤트 핸들러 다음에 오브젝트를 조작하고 이벤트 핸들러는 이벤트를 처리합니다. 리피터 ItemCommand를 사용하여 적절한 표시 논리를 결정하는 것이 좋습니다. –