繁体   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