C# 下拉列表值重置
我用一组值填充了一个DropDownList。单击某个值时,DropDownList值应保持该值,但大多数情况下会重置为默认值选择类型 以下是DDL:C# 下拉列表值重置,c#,asp.net,drop-down-menu,C#,Asp.net,Drop Down Menu,我用一组值填充了一个DropDownList。单击某个值时,DropDownList值应保持该值,但大多数情况下会重置为默认值选择类型 以下是DDL: <asp:TemplateField HeaderText="Criteria Type:" SortExpression="CriteriaType"> <EditItemTemplate> <asp:DropDownL
<asp:TemplateField HeaderText="Criteria Type:" SortExpression="CriteriaType">
<EditItemTemplate>
<asp:DropDownList ID="CriteriaType" AutoPostBack="True" runat="server" SelectedValue='<%# Bind("CriteriaType") %>'>
<asp:ListItem Value="0">Select a Type</asp:ListItem>
<asp:ListItem Value="TMEL Table">TMEL Table</asp:ListItem>
<asp:ListItem Value="Risk Matrix">Risk Matrix</asp:ListItem>
<asp:ListItem Value="Alarm Rationalization">Alarm Rationalization</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:DropDownList ID="CriteriaType" AutoPostBack="True" runat="server" ViewStateMode="Enabled"
SelectedValue='<%# Bind("CriteriaType") %>'>
<asp:ListItem Value="0">Select a Type</asp:ListItem>
<asp:ListItem Value="TMEL Table">TMEL Table</asp:ListItem>
<asp:ListItem Value="Risk Matrix">Risk Matrix</asp:ListItem>
<asp:ListItem Value="Alarm Rationalization">Alarm Rationalization</asp:ListItem>
</asp:DropDownList>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("CriteriaType") %>'></asp:Label></ItemTemplate>
</asp:TemplateField>
如果没有回发,请确保添加检查
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DropDownList criteriaType = (DropDownList)DetailsView1.FindControl("CriteriaType");
if (criteriaType.SelectedValue == "TMEL Table")
{
DetailsView1.Fields[5].Visible = true;
DetailsView1.Fields[6].Visible = false;
DetailsView1.Fields[7].Visible = false;
}
else if ((criteriaType.SelectedValue == "Risk Matrix"))
{
DetailsView1.Fields[5].Visible = true;
DetailsView1.Fields[6].Visible = true;
DetailsView1.Fields[7].Visible = true;
DetailsView1.Fields[8].Visible = true;
}
else if ((criteriaType.SelectedValue == "Alarm Rationalization"))
{
DetailsView1.Fields[5].Visible = true;
DetailsView1.Fields[6].Visible = true;
DetailsView1.Fields[7].Visible = true;
DetailsView1.Fields[8].Visible = true;
}
else if (criteriaType.SelectedValue == "Select a Type")
{
DetailsView1.Fields[5].Visible = false;
DetailsView1.Fields[6].Visible = false;
DetailsView1.Fields[7].Visible = false;
}
}
}
您知道IsPostBack事件的工作原理和页面状态吗?基本上,当IsPostBack事件工作时,控件会刷新 每次从codebehind更新页面时,都会触发一个神奇的小Javascript,它要么通过XMLHTTTP post(我认为是XMLHTTTP post)命中服务器,要么像表单post一样,真正的硬post回击服务器。因此,当服务器看到这一点时,它会检查IsPostBack标志,这就像是一个自动字段,添加到每个ASP.net页面中 然后检查IsPostBack标志以更改事物的状态 如果在IsPostBack=true中填充列表框,则该列表框似乎不可选择。如果不使用它来填充列表框,则该值似乎一直在更改 这可能与在回发中设置所选值一样简单
HTHDropDownList的值现在保持不变,但没有对字段的操作。当我单击任何DDL值时,应该可见的DetailsView1字段都不可见。
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DropDownList criteriaType = (DropDownList)DetailsView1.FindControl("CriteriaType");
if (criteriaType.SelectedValue == "TMEL Table")
{
DetailsView1.Fields[5].Visible = true;
DetailsView1.Fields[6].Visible = false;
DetailsView1.Fields[7].Visible = false;
}
else if ((criteriaType.SelectedValue == "Risk Matrix"))
{
DetailsView1.Fields[5].Visible = true;
DetailsView1.Fields[6].Visible = true;
DetailsView1.Fields[7].Visible = true;
DetailsView1.Fields[8].Visible = true;
}
else if ((criteriaType.SelectedValue == "Alarm Rationalization"))
{
DetailsView1.Fields[5].Visible = true;
DetailsView1.Fields[6].Visible = true;
DetailsView1.Fields[7].Visible = true;
DetailsView1.Fields[8].Visible = true;
}
else if (criteriaType.SelectedValue == "Select a Type")
{
DetailsView1.Fields[5].Visible = false;
DetailsView1.Fields[6].Visible = false;
DetailsView1.Fields[7].Visible = false;
}
}
}