Dropdownlist Фильтрация на стороне клиента в Asp.NET - PullRequest
0 голосов
/ 07 марта 2011

Мне любопытно, как выполнить фильтрацию на стороне клиента, где задействован Javascript (возможно, его не нужно писать, но именно его будет запускать браузер пользователя).Ему не нужен ajax (хотя приветствуются решения, связанные с ajax).

Я новичок в программировании на Asp.NET.Этот пример относится к проблеме, с которой я сталкиваюсь на работе.Я много лет занимался прикладным программированием и даже немного php.Но изучение Asp.NET доставляет мне трудности (чего я не ожидал).

У меня есть три поля со списком.Но я хочу отфильтровать то, что вкладывается в них, основываясь на том, что выбрано и что доступно (дополнительная таблица).

Вот пример кодовой страницы.Сейчас в файле с выделенным кодом .vb есть только пустой Page.Load ().

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Sample Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:XmlDataSource ID="SqlDataSource1" runat="server">

<%--dropdownvaluesId    categoryId  value   code
1   1   AndhraPradesh   AP
2   1   Tamilnadu   TN
3   2   South Carolina  SC
4   2   Tennesse    TN
5   3   Victoria    Vic
6   3   New South Wales     NSW
--%>
            <Data>
                <DropdownValues>
                    <DropdownValue dropdownvaluesId="-1" categoryId="1" value="" code="Blank" />
                    <DropdownValue dropdownvaluesId="1"  categoryId="1" value="AndhraPradesh" code="AP" />
                    <DropdownValue dropdownvaluesId="2"  categoryId="1" value="Tamilnadu" code="TN" />
                    <DropdownValue dropdownvaluesId="-1" categoryId="2" value="" code="Blank" />
                    <DropdownValue dropdownvaluesId="3"  categoryId="2" value="South Carolina" code="SC" />
                    <DropdownValue dropdownvaluesId="4"  categoryId="2" value="Tennesse" code="TN" />
                    <DropdownValue dropdownvaluesId="-1" categoryId="3" value="" code="Blank" />
                    <DropdownValue dropdownvaluesId="5"  categoryId="3" value="Victoria" code="Vic" />
                    <DropdownValue dropdownvaluesId="6"  categoryId="3" value="New South Wales" code="NSW" />
                    <DropdownValue dropdownvaluesId="7"  categoryId="3" value="Queensland" code="QLD" />
                </DropdownValues>
            </Data>
        </asp:XmlDataSource>

        <asp:XmlDataSource ID="SqlDataSource2" runat="server">

<%--categoryId  Name
1   India
2   USA
3   Australia
--%>
            <Data>
                <DropdownCategories>
                    <DropdownCatagory categoryId="1" Name="Inda" />
                    <DropdownCatagory categoryId="2" Name="USA" />
                    <DropdownCatagory categoryId="3" Name="Australia" />
                </DropdownValues>
            </Data>
        </asp:XmlDataSource>

        <asp:XmlDataSource ID="SqlDataSource3" runat="server">

<%---- Available Combinations --

india_dropdownvalueId    usa_dropdownvalueId    australia_dropdownvalueId

1                        3                      5
1                        3                      6
1                        3                      5
1                        4                      7
--%>
            <Data>
                <AvailableCombinations>
                    <Combination india_dropdownvalueId="1" usa_dropdownvalueId="3" australia_dropdownvalueId="5" />
                    <Combination india_dropdownvalueId="1" usa_dropdownvalueId="3" australia_dropdownvalueId="6" />
                    <Combination india_dropdownvalueId="1" usa_dropdownvalueId="4" australia_dropdownvalueId="7" />
                </DropdownValues>
            </Data>
        </asp:XmlDataSource>

        <asp:XmlDataSource ID="IndiaDataSource" runat="server">
            <Data>
                <DropdownValues>
                    <DropdownValue dropdownvaluesId="-1" categoryId="1" value="" code="Blank" />
                    <DropdownValue dropdownvaluesId="1"  categoryId="1" value="AndhraPradesh" code="AP" />
                    <DropdownValue dropdownvaluesId="2"  categoryId="1" value="Tamilnadu" code="TN" />
                </DropdownValues>
            </Data>
        </asp:XmlDataSource>

        <asp:XmlDataSource ID="USADataSource" runat="server">
            <Data>
                <DropdownValues>
                    <DropdownValue dropdownvaluesId="-1" categoryId="2" value="" code="Blank" />
                    <DropdownValue dropdownvaluesId="3"  categoryId="2" value="South Carolina" code="SC" />
                    <DropdownValue dropdownvaluesId="4"  categoryId="2" value="Tennesse" code="TN" />
                </DropdownValues>
            </Data>
        </asp:XmlDataSource>

        <asp:XmlDataSource ID="AustraliaDataSource" runat="server">
            <Data>
                <DropdownValues>
                    <DropdownValue dropdownvaluesId="-1" categoryId="3" value="" code="Blank" />
                    <DropdownValue dropdownvaluesId="5"  categoryId="3" value="Victoria" code="Vic" />
                    <DropdownValue dropdownvaluesId="6"  categoryId="3" value="New South Wales" code="NSW" />
                    <DropdownValue dropdownvaluesId="7"  categoryId="3" value="Queensland" code="QLD" />
                </DropdownValues>
            </Data>
        </asp:XmlDataSource>

<%--     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
            SelectCommand="SELECT [CategoryID], [Value], [Code], [dropdownValuesID] FROM [DropdownValues]"></asp:SqlDataSource>
--%>   
       <table cellpadding="2" cellspacing="2">
        <tr>
        <td><asp:Label ID="Label1" runat="server" Text="States in India"></asp:Label></td>
        <td><asp:DropDownList ID="ddlIndia" runat="server" DataSourceID="IndiaDataSource" DataTextField="value" DataValueField="code" ColumnName="CategoryID" EmptyDataText="No Items Found" FilterBy="1" UIFriendlyText="Select State"></asp:DropDownList></td>
        <td width="100px">&nbsp;</td>
        <td><asp:Label ID="Label2" runat="server" Text="States in USA"></asp:Label></td>
        <td><asp:DropDownList ID="ddlUSA" runat="server" DataSourceID="USADataSource" DataTextField="value" DataValueField="code" ColumnName="CategoryID" EmptyDataText="No Items found" FilterBy="2" UIFriendlyText="Select State"></asp:DropDownList></td>       
        <td width="100px">&nbsp;</td>
        <td><asp:Label ID="Label3" runat="server" Text="States in Australia"></asp:Label></td>
        <td><asp:DropDownList ID="ddlAustralia" runat="server" DataSourceID="AustraliaDataSource" DataTextField="value" DataValueField="code" ColumnName="CategoryID" EmptyDataText="No Items found" FilterBy="2" UIFriendlyText="Select State"></asp:DropDownList></td>       
        </tr>
       </table>        
    </div>
    </form>
</body>
</html>

Итак, изначально в ddlIndia будет только один элемент - AndhraPradesh;два пункта в ddlUSA - Южная Каролина и Теннесси;и три предмета в Австралии - Виктория, Новый Южный Уэльс, Квинсленд.Бланк также должен заполнить эти выпадающие списки.Но я не считаю их элементами.

Если вы выберете Квинсленд, ddlUSA необходимо отфильтровать, чтобы разрешить выбор только Теннесси или бланка, а ddlIndia необходимо отфильтровать, чтобы разрешить выбор AndhraPradesh или пробела (чтопо умолчанию для ddlIndia).

Я ценю любые ссылки на сайты, где я могу узнать это сам.Я не ищу бесплатный раздаточный материал.Просто потратить пару дней, пытаясь найти информацию и примеры того, как это сделать, становится бесплодным.

Я не возражаю против VB.NET или C #, если требуется выделение кода.Я думаю, VB.NET, если вы не можете решить, и это проще всего для вас.

Надеюсь, полезно,

TamusJRoyce

ps Я работаю утром, так что я будубыть снова около 12 часов.Уйти спать с другим днем ​​без решения. Пример проекта - исходный код.

Ответы [ 2 ]

1 голос
/ 07 марта 2011

Несмотря на то, что я презираю ASP.NET AJAX Control Toolkit, он все равно будет лучше, чем весь код, который у вас есть на данный момент, включая SqlDataSource элемент (ы), встроенный в вашу страницу.

Взгляните на этот образец элемента управления AJAX CascadingDropDown .

Все, что вам нужно сделать (в основном), - это создать веб-сервис для предоставления клиентской стороне необходимых данных.настройте расширители так, чтобы они указывали на веб-метод и передавали соответствующие параметры, и он будет делать то, что вы хотите, с НАМНОГО меньшим количеством кода / HTML, чем у вас.

Если вы не хотите использовать серверсо стороны AJAX вы можете достичь вышеизложенного с помощью jQuery (и также избегать ViewState).

0 голосов
/ 07 марта 2011

CascadingDropDown принудительно отключает проверку на странице, поэтому мой клиент не разрешил бы ее, если бы я мог ее использовать (получил ее работу, но пришлось ее удалить). asp: DropDownList AutoPostBack по умолчанию ложно. Установка в true позволила мне обновлять выпадающие списки, когда выбор изменился. Я действительно новичок за то, что упустил эту простую вещь.

<asp:DropDownList ID="DropdownVersion" AutoPostBack="true" runat="server" />

Но это все равно не дает мне способа встроить Javascript в клиент, и, основываясь на выборках, сделанных в любом из трех выпадающих списков, отфильтруйте их на основе скрытой коллекции доступных ассоциаций. Поэтому любая информация по этому вопросу будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...