Как найти и настроить панель, используя выпадающий список?

0

Прежде чем начать, я хотел бы сказать одно: это не связано с базой данных.

Я разрабатываю сайт, используя asp.net. Здесь застряли из-за некоторых путаниц.
На одной из моих страниц доступно несколько панелей. Каждая панель имеет одну метку (имя состояния) и два текстовых поля. В верхней части страницы строка поиска (раскрывающийся список) предоставляется с именами состояний.

Теперь здесь сценарий: если пользователь выбирает состояние из раскрывающегося списка, следует искать конкретную панель с соответствующей меткой (имя состояния).

Например

У меня есть состояние A, B и C в моем раскрывающемся списке (панель поиска), и в то же время я также имею три панели, такие как панель x (состояние A как имя метки и два текстовых поля), панель y ( State B как имя метки и два текстовых поля) и Panel z (State C как имя метки и два текстовых поля) на странице Default.aspx.

Теперь мне нужно, если пользователь выберет State A из выпадающего списка, тогда конкретная панель (которая имеет статус A) должна отображаться со всеми элементами управления

"Нет связи с базой данных"

Надеюсь, я не смущаюсь. Любая помощь будет более полезной для меня.
Заранее спасибо.

  • 0
    Хотите показать нам, что вы пытались?
  • 0
    Откуда ты хочешь показать спрятанный C# или java-script ?
Показать ещё 1 комментарий
Теги:

4 ответа

0
Лучший ответ

Предполагая, что 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;
    }

}
0

Это громоздко, но вы можете отображать/скрывать элементы управления на основе выбранного события изменения индекса в раскрывающемся списке. Вот пример, вам нужно будет изменить его в соответствии со своим сценарием.

protected void Dropdownlist1_Changed(object sender, EventArgs, e)
{
    string item = Dropdownlist1.SelectedValue;
    if(item == "State 1")
    {
        Panel1.Visible = false;
        Panel2.Visible = true;
    }
}
  • 0
    Спасибо за ваш ответ, но дело в том, что здесь мне нужно проверить элементы выпадающего списка с элементами управления метками, которые находятся на панелях. Пожалуйста, повторите мой пример еще раз. Дайте мне знать, если я путаю с моим вопросом.
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>

И в С#

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;

}
  • 0
    Ваш ответ идеален, у меня есть идея. Но здесь говорится о некоторой ошибке: «Ссылка на объект не установлена на экземпляр объекта».
  • 0
    на какой линии вы получаете эту ошибку?
Показать ещё 6 комментариев
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;
    }
}

}

Надеюсь это поможет,

Счастливое кодирование

Ещё вопросы

Сообщество Overcoder
Наверх
Меню