ASP 페이지에 붙어 있습니다.DataBound ASP : CheckBox 이벤트가 예상대로 트리거되지 않음 Page_Load()에서 발생하는 DataBinding의 bacause
페이지에 여러 개의 확인란이 포함 된 ASP : 컨테이너가 있습니다. 이러한 CheckBoxes OnCheckChange에 이벤트를 추가해야하므로 CheckBox 중 하나를 클릭 할 때마다 다른 모든 확인란의 선택이 취소됩니다. RadioButton을 사용할 수 있지만 CheckBox를 사용하는 것은이 주제를 벗어나는 다른 장점이 있으므로 라디오 버튼을 사용하고 싶지는 않습니다.
<ASP:Repeater id="MyRepeater" runat="server" OnItemDataBound="MyRepeater_ItemDataBound">
<ItemTemplate>
<asp:CheckBox id="MyCB" runat="server" OnCheckedChanged="MyCB_CheckedChanged" AutoPostBack="true" />
<br/>
</ItemTemplate>
</ASP:Repeater>
을 뒤에 코드로 :한다면 이론적 그냥 같이 잘 작동 할 것입니다
예상대로이 페이지의 다른 지역을 가지고, 그러나protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
MyRepeater.DataSource=DS;
MyRepeater.DataBind();
}
}
protected void MyCB_CheckedChanged(object sender, EventArgs e)
{
UncheckallOtherCheckBoxes();
}
이 일을 내가해야 할 처음 페이지가로드 될 때마다뿐만 아니라 모든 페이지로드시 DataSource를 바인딩합니다. 그래서 나는
protected void Page_Load(object sender, EventArgs e)
{
// if (!IsPostBack)
{
MyRepeater.DataSource=DS;
MyRepeater.DataBind();
}
}
로를 Page_Load을 변경해야합니다 그리고 이것은 실패의 모든 원인! :) 체크 상자를 클릭하면 MyCB_CheckedChanged() 전에 Page_Load가 트리거되기 때문에. DataBinds 먼저 DataBinding은 사용자가 수행하지 않은 체크 박스 이벤트를 보냅니다.
이 문제를 해결할 방법이 있습니까?
Thx.
1. 페이지가로드 될 때마다 데이터베이스를 리 바인드해야합니까? 조금 이상합니다. 이유를 설명해 주면 다른 사람들이 더 잘 이해할 수 있습니다. –
@Sandy : 포즈에 언급 된 컨테이너가 다른 컨테이너에 중첩되어 있기 때문에 생각합니다. 포스트 백에서 마스터 컨테이너를 다시 바인드하지 않으면 모든 하위 컨테이너에 데이터가 없음을 알게됩니다. –