簡體   English   中英

Asp.NET中的Dropdownlist客戶端篩選

[英]Dropdownlist Client-Side Filtering in Asp.NET

我對如何執行涉及Javascript的客戶端篩選感到好奇(可能不需要編寫Java Script,但是用戶的瀏覽器將運行Java Script)。 它不需要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中有兩項-南卡羅來納州和田納西州; ddlAustralia中的三個項目-維多利亞州,新南威爾士州,昆士蘭州。 空白還需要填充這些下拉列表。 但是我不認為它們是項目。

如果選擇昆士蘭州,則ddlUSA需要過濾以僅允許選擇田納西州或空白,而ddlIndia需要過濾以允許選擇AndhraPradesh或空白(這是ddlIndia的默認設置)。

我到並欣賞網站,我可以學習這個我自己有任何聯系。 我不是在尋求免費的施舍。 僅僅花了幾天的時間來查找信息,以及有關如何執行此操作的示例變得無濟於事。

如果需要代碼隱藏,我不介意VB.NET或C#。 我猜VB.NET如果您不能決定,那對您來說最簡單。

希望會有所幫助,

塔繆斯·羅伊斯

ps:我早上工作,所以大約十二小時后我會再次出現。 睡不着的另一天。 示例項目是初始代碼的來源。

盡管我不喜歡ASP.NET AJAX控件工具包,但它仍然比您當前擁有的所有代碼(包括在頁面上內聯的SqlDataSource控件)更好。

看一下AJAX CascadingDropDown控件的這個示例

您需要做的(基本上)是創建一個Web服務,以向客戶端提供所需的數據,將擴展程序配置為指向Web方法並傳遞相關參數,然后它將使用LOT進行所需的操作更少的代碼/ HTML。

如果您不想使用服務器端AJAX,則可以使用一些jQuery來實現上述目的(並避免使用ViewState)。

CascadingDropDown強制關閉頁面上的驗證,因此如果我能夠使用它(讓它工作但必須刪除它),我的客戶將不允許它。 asp:DropDownList AutoPostBack默認為false。 將其設置為true可使我在選擇更改時更新下拉菜單。 我真的很想念這個簡單的東西。

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

但這仍然無法為我提供將Javascript嵌入客戶端的方法,並且基於對三個下拉列表中任何一個的選擇,基於隱藏的可用關聯集合對它們進行過濾。 因此,對此的任何信息將不勝感激。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM