我创建了一个下拉列表和一个与日历扩展程序w相对应的下拉列表。根据选择的不同,下拉列表中的每个值都会对样式可见性产生不同的影响。就目前而言,功能是有效的;然而,每次尝试选择不同的列表项时,它会刷新整个页面,我不想设置AutoPostBack =“false”。 请让我知道什么是解决此问题的最佳方法。当autopostback必须设置为true(包含代码)时,无回传的Dropdownlist
<asp:DropDownList ID="dropdownlist" runat="server" OnSelectedIndexChanged="dropdownlist_SelectedIndexChanged" AutoPostBack="True" >
<asp:ListItem Value="1">a</asp:ListItem>
<asp:ListItem Value="2">b</asp:ListItem>
<asp:ListItem Value="3">c</asp:ListItem>
<asp:ListItem Value="4">d</asp:ListItem>
<asp:ListItem Value="5">e</asp:ListItem>
<asp:ListItem Value="6">f</asp:ListItem>
<asp:ListItem Value="7">g</asp:ListItem>
</asp:DropDownList> <asp:Panel runat="server" ID="StartDate" >
<asp:Label ID="lblStartDate" runat="server" Text="Start Date:"></asp:Label>
<asp:TextBox ID="txtStartDate" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidatorStartDate" runat="server" ErrorMessage="Please enter a validate date" ControlToValidate="txtStartDate" Type="Date" Operator="DataTypeCheck" Display="Static" Font-Italic="False" SetFocusOnError="True"></asp:CompareValidator>
</asp:Panel>
<cc1:CalendarExtender ID="CalendarExtenderStartDate" TargetControlID="txtStartDate" runat="server"></cc1:CalendarExtender>
<asp:Panel runat="server" ID="EndDate" >
<asp:Label ID="lblEndDate" runat="server" Text="End Date:"></asp:Label>
<asp:TextBox ID="txtEndDate" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidatorEndDate" runat="server" ErrorMessage="Please enter a validate date" ControlToValidate="txtEndDate" Type="Date" Operator="DataTypeCheck" Display="Static" Font-Italic="False" SetFocusOnError="True"></asp:CompareValidator>
</asp:Panel>
<cc1:CalendarExtender ID="CalendarExtenderEndDate" TargetControlID="txtEndDate" runat="server"></cc1:CalendarExtender>
代码隐藏
if (!IsPostBack)
{
SetDateFields();
}
}
protected void dropdownlist_SelectedIndexChanged(object sender, EventArgs e)
{
SetDateFields();
}
private void SetDateFields()
{
switch (dropdownlist.SelectedValue)
{
case "1":
case "3":
case "5":
EndDate.Visible = false;
StartDate.Visible = true;
lblStartDate.Text = "As Of Date:";
break;
case "7":
EndDate.Visible = false;
StartDate.Visible = false;
break;
default:
EndDate.Visible = true;
StartDate.Visible = true;
lblStartDate.Text = "Start Date:";
lblEndDate.Text = "End Date:";
break;
}
}