我很好奇如何执行客户端过滤,其中涉及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"> </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"> </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需要过滤以仅允许Tennesse或空白被选中,并且ddlIndia需要过滤以允许选择AndhraPradesh或空白(这是ddlIndia的默认值)。
我浏览任何我可以自己学习的网站链接。我不是在寻找免费的。它只花了几天时间试图找到信息,如何做到这一点的例子变得徒劳无功。
如果需要代码隐藏,我不介意VB.NET或C#。我想VB.NET如果你不能决定,那对你来说最简单。
希望有帮助,
TamusJRoyce
P.S。我早上上班,所以我将在大约12个小时内再次出现。在另一天没有解决方案的情况下休息。 Example Project是初始代码的来源。
答案 0 :(得分:1)
尽管我鄙视ASP.NET AJAX控件工具包,但它仍然比您目前拥有的所有代码都要好,包括您在页面上内联的SqlDataSource
控件。
看看this sample of the AJAX CascadingDropDown control。
您需要做的(基本上)是创建一个Web服务,为客户端提供所需的数据,配置扩展器以指向Web方法并传递相关参数,它将执行您想要的操作使用的代码/ HTML比你拥有的代码少得多。
如果您不想使用服务器端AJAX,可以使用一些jQuery实现上述功能(并避免使用ViewState)。
答案 1 :(得分:0)
CascadingDropDown强制关闭页面上的验证,因此如果我能够使用它,我的客户就不会允许它(让它工作,但必须将其删除)。 asp:DropDownList AutoPostBack默认为false。将此设置为true允许我在选择更改时更新下拉列表。我真的是一个错过这个简单事情的菜鸟。
<asp:DropDownList ID="DropdownVersion" AutoPostBack="true" runat="server" />
但是这仍然不能让我在客户端中嵌入Javascript,并根据对三个下拉列表中的任何一个所做的选择,根据隐藏的可用关联集合过滤它们。因此,我们将非常感谢任何有关这方面的信息。