Использование: .NET 3.5SP1, VS2008
Я редактировал другой скрипт asp.net, он выполнял извлечение данных на Page_Load
, пока страница не отправляла обратно.
IЯ мог видеть, что данные были заполнены в DropDownList должным образом даже после того, как я обновил, переместился, выполнил постбэк на странице.
Я добавил в скрипт еще несколько DropDownList и несколько CheckBox, только добавленный DropDownList был заполнен правильно.Но не CheckBox.
Так что я делаю тест в новом проекте, который похож на его структуру скрипта:
ASPX:
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem>Item1</asp:ListItem>
<asp:ListItem>Item2</asp:ListItem>
</asp:DropDownList>
<%
if (DropDownList1.SelectedValue == "Item2")
{
%>
<asp:CheckBox ID="CheckBox1" runat="server" Text="CheckBox 1" />
<asp:TextBox ID="TextBox1" runat="server" Text="" />
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true">
<asp:ListItem>Item1</asp:ListItem>
<asp:ListItem>Item2</asp:ListItem>
</asp:DropDownList>
<%
}
%>
</div>
</form>
Code-Behind:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
this.CheckBox1.Checked = true;
this.CheckBox1.Text = "Hello CheckBox";
this.TextBox1.Text = "Hello TextBox";
this.DropDownList2.SelectedValue = "Item2";
}
}
}
Итак, когда вы видите код, при первой загрузке страницы текст CheckBox1
изменится, Checked
будет истинным, так же как и другие TextBox
и DropDownList2
После того, как я выбрал элемент DropDownList1
для Item2
, когда CheckBox1
, TextBox1
, DropDownList2
ничего не было установлено, кроме CheckBox1.Text
.
Почемуэто случилось?
РЕДАКТИРОВАТЬ:
Я пытался поместить их в Panel, таким образом это работает.Но проблема в том, что программа, которую я редактирую, использует формат выше ... Поэтому я не могу изменить их все на Panel.
<form id="form1" runat="server">
<div>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true">
<asp:ListItem>Item1</asp:ListItem>
<asp:ListItem>Item2</asp:ListItem>
</asp:DropDownList>
<%
if (DropDownList1.SelectedValue == "Item2")
{
this.MyPanel.Visible = true;
}
else
{
this.MyPanel.Visible = false;
}
%>
<asp:Panel ID="MyPanel" runat="server" Visible="false" >
<asp:CheckBox ID="CheckBox1" runat="server" Text="CheckBox 1" />
<asp:TextBox ID="TextBox1" runat="server" Text="" />
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="true">
<asp:ListItem>Item1</asp:ListItem>
<asp:ListItem>Item2</asp:ListItem>
</asp:DropDownList>
</asp:Panel>
</div>
</form>