![](/img/trans.png)
[英]Asp.Net: Restoring client-side SelectedItem of DropDownList on server-side
[英]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"> </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需要過濾以僅允許選擇田納西州或空白,而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.