가능한 한 간단하게 autopostback이 true로 설정되고 OnSelectedIndexChanged가 설정된 확인란 상자가 있습니다. 그러나 누군가가 체크 박스의 항목을 클릭 할 때마다 페이지가 새로 고침됩니다. 어떻게 그만합니까? 나는 UpdatedPanel (일종의 작품)을 사용해 보았습니다.확인란을 클릭 할 때마다 페이지 새로 고치기를 중지하는 방법
<asp:CheckBoxList ID="Regions" runat="server" OnSelectedIndexChanged="Regions_SelectedIndexChanged" AutoPostBack="true" DataSourceID="SqlDataSource2" DataTextField="Regions" DataValueField="ID">
</asp:CheckBoxList>
OnselectedIndexChange는 하나의 확인란 상자 옆에 다른 확인란의 div를 표시합니다.
protected void Regions_SelectedIndexChanged(object sender, EventArgs e)
{
string select = @"Select Facilities from [BulletinBoard].[DMHSAS\290974].[Facilities] ";
int[] ctr = new int[9];
int ctr1 = 0;
int counter = 0;
dFacilities.Style.Add("display", "block");
foreach (ListItem item in Regions.Items)
{
//Response.Write(item.Selected);
if (Regions.SelectedIndex == 0)
{
item.Selected = true;
CheckBoxList1.Visible = true;
counter++;
}
else if (item.Selected)
{
if (select.EndsWith("[Facilities] "))
{
select += "where ";
}
if (select.EndsWith(") "))
{
select += " or ";
}
select += " (Reg_ID = " + Regions.SelectedIndex + ") ";
ctr[ctr1 + 1] = Regions.SelectedIndex;
item.Selected = false;
counter++;
CheckBoxList1.Visible = true;
}
ctr1++;
}
if (counter == 0)
{
CheckBoxList1.Visible = false;
dFacilities.Style.Add("display", "none");
}
ctr1 = 0;
bool all = false;
foreach (int counter1 in ctr)
{
Regions.Items[counter1].Selected = true;
if (Regions.Items[0].Selected == true)
foreach (ListItem item in Regions.Items)
{
if (item.Selected)
{
all = true;
}
else
{
all = false;
break;
}
}
if (all == false)
{
Regions.Items[0].Selected = false;
}
}
따라서는'UpdatePanel'에서는 작동 여부가 있기 때문에
또는 당신의 업데이트 패널이 작동하지 않는 이유는? 어쨌든 그것을 보여주지 않았습니다. –
OP는 일종의 updatepanel을 사용한다고 말합니다! – rach
'UpdatePanel'은 페이지 새로 고침을 마스크합니다. 여전히 포스트 백을하고 있습니다. 페이지를 새로 고치지 않으려면'autopostback'을'false'로 설정하지 않으시겠습니까? – Mrchief