在开始之前,我想说一件事,这与数据库无关。
我正在使用asp.net开发一个网站。由于一些混乱,这里陷入困境 在我的一个页面中,有许多面板可用。每个面板都有一个标签(State Name)和两个文本框。在页面顶部,搜索栏(下拉列表)随州名提供。
现在的情况是,如果用户从下拉列表中选择状态,则应搜索具有相应标签(州名称)的特定面板。
例如
我的下拉列表(搜索栏)中有A,B和C状态,同时我还有三个面板,例如Panel x(状态A作为标签)名称和两个文本框),面板y(状态B作为标签名称和两个文本框),以及Default.aspx页面中的Panel z(状态C作为标签名称和两个文本框)。
现在我需要,如果用户从下拉列表中选择状态A,那么特定面板(哪个标签具有状态A)应显示所有控件
“与数据库无关”
希望不要混淆。任何帮助对我都会更有帮助 提前谢谢。
答案 0 :(得分:1)
假设label1在Panel1中,而label2在Panel2中
protected void Dropdownlist1_Changed(object sender, EventArgs, e)
{
string labelTxt= Dropdownlist1.SelectedValue;
if(labelTxt == label1.Text)
{
Panel1.Visible = true;
Panel2.Visible = false;
}
else if(labelTxt == label2.Text)
{
Panel1.Visible = false;
Panel2.Visible = true;
}
}
答案 1 :(得分:0)
这很麻烦,但您可以根据下拉列表中选定的索引更改事件显示/隐藏控件。这是一个示例,您需要进行修改以适合您的场景。
protected void Dropdownlist1_Changed(object sender, EventArgs, e)
{
string item = Dropdownlist1.SelectedValue;
if(item == "State 1")
{
Panel1.Visible = false;
Panel2.Visible = true;
}
}
答案 2 :(得分:0)
很容易,但你需要更合乎逻辑意味着你的面板和掉落淹没列表之间没有任何关系。
<asp:DropDownList runat="server" ID="ddlState" AutoPostBack="True"
OnSelectedIndexChanged="ddlState_SelectedIndexChanged" >
<asp:ListItem Text="StateA" Value="Panel1" />
<asp:ListItem Text="StateB" Value="Panel2" />
</asp:DropDownList>
在C#中
protected void ddlState_SelectedIndexChanged(object sender, EventArgs, e)
{
//hide all the panels
for(int i=0;i<ddlState.Items.Count;i++)
{
var control= ddlState.Items[i].Value;
if(this.FindControl(control)!=null)
this.FindControl(control).Visible=false;
}
//show the selected dropdown list panel
string item = Dropdownlist1.SelectedValue;
if(this.FindControl(item)!=null)
this.FindControl(item).Visible =true;
}
答案 3 :(得分:0)
<强> HTML 强>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel ID="pnlDropDown" runat="server">
<table style="width:100%">
<tr>
<td style="text-align:right;width:30%">
<asp:Label ID="lblState" runat="server" Text="Select State"></asp:Label>
</td>
<td>
<asp:DropDownList ID="ddlState" runat="server" AutoPostBack="true" AppendDataBoundItems="true" OnSelectedIndexChanged="ddlState_SelectedIndexChanged">
<asp:ListItem></asp:ListItem>
<asp:ListItem Value="pnlA">State A</asp:ListItem>
<asp:ListItem Value="pnlB">State B</asp:ListItem>
<asp:ListItem Value="pnlC">State C</asp:ListItem>
</asp:DropDownList>
</td>
<td></td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="pnlA" runat="server" Visible="false">
<table style="width:100%">
<tr>
<td style="text-align:right;width:30%">
<asp:Label ID="lblStateA" runat="server" Text="State A"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtboxA" runat ="server"></asp:TextBox>
</td>
<td></td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="pnlB" runat="server" Visible="false">
<table style="width:100%">
<tr>
<td style="text-align:right;width:30%">
<asp:Label ID="lblB" runat="server" Text="State B"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtB" runat ="server"></asp:TextBox>
</td>
<td></td>
</tr>
</table>
</asp:Panel>
<asp:Panel ID="pnlC" runat="server" Visible="false">
<table style="width:100%">
<tr>
<td style="text-align:right;width:30%">
<asp:Label ID="lblc" runat="server" Text="State C"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtc" runat ="server"></asp:TextBox>
</td>
<td></td>
</tr>
</table>
</asp:Panel>
</div>
</form>
</body>
</html>
代码背后
namespace WebApplication1
{
public partial class dropdown : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ddlState_SelectedIndexChanged(object sender, EventArgs e)
{
for (int i = 1; i < ddlState.Items.Count; i++)
{
var control = ddlState.Items[i].Value;
this.FindControl(control).Visible = false;
}
string item = ddlState.SelectedValue;
this.FindControl(item).Visible = true;
}
}
}
希望这有帮助,
快乐编码