2011-03-07 2 views
0

자바 스크립트가 관련되어있는 클라이언트 측 필터링을 수행하는 방법에 대해 궁금합니다 (작성해야 할 필요는 없지만 사용자의 브라우저가 실행됩니다). 아약스가 필요하지 않습니다 (아약스 관련 솔루션도 환영합니다).Dropdownlist Asp.NET의 클라이언트 측 필터링

저는 Asp.NET 프로그래밍의 새로운 기능입니다. 이 예제는 직장에서 겪고있는 문제와 관련이 있습니다. 나는 몇 년 동안 응용 프로그램 기반의 프로그래밍을 해왔으며, 심지어 일부 PHP를 사용했다. 그러나 Asp.NET을 배우는 것은 나에게 힘든 시간을주고있다.

세 개의 콤보 상자가 있습니다. 그러나 나는 무엇이 선택되고 어떤 것이 이용 가능한지 (여분의 테이블) 무엇을 기반으로 그들에 넣어 지는지를 걸러 내고 싶다.

다음은 예제 코드 페이지입니다. 지금은 빈 페이지.로드() 코드 숨김 .vb 파일에 있습니다.

<%@ 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에있을 것입니다 - 안드라 프라데시 주; ddlUSA의 두 항목 - 사우스 캐롤라이나와 테네시; ddlAustralia의 3 개 항목 - Victoria, New South Wales, Queensland. 공백도 이러한 드롭 다운 목록을 채워야합니다. 그러나 나는 그 (것)들을 품목이라고 생각하지 않는다.

퀸즐랜드를 선택하는 경우 ddlUSA는 테네시 또는 공백 만 선택할 수 있도록 필터링해야하며 AndhraPradesh 또는 공백 (ddlIndia의 기본값)을 허용하려면 ddlIndia를 필터링해야합니다.

본인이 직접 배울 수있는 사이트 링크를 보여줍니다. 나는 자유로운 유인물을 찾고있는 것이 아니다. 정보 검색을 위해 며칠을 보내고 있으며이를 수행하는 방법에 대한 예제는 효과가 없습니다.

코드 숨김이 필요한 경우 VB.NET 또는 C#을 사용해도 상관 없습니다. 당신이 결정할 수 없다면 VB.NET 것 같아요 그리고 그것은 당신을 위해 가장 쉽습니다.

희망이 도움이

TamusJRoyce

추신 나는 아침에 일하므로, 약 12 ​​시간 후에 다시있을 것입니다. 아무런 해결책도없는 다른 날과 함께 자고 있습니다. Example Project은 초기 코드의 출처입니다.

+0

asp : XmlDataSource는이 예제에만 해당됩니다. 코드 숨김은 실제 응용 프로그램의 SQL 쿼리에서 사용자 지정 비즈니스 개체를 채 웁니다. – TamusJRoyce

답변

1

ASP.NET AJAX Control Toolkit을 경멸하는 것처럼 페이지에 인라인이있는 SqlDataSource 컨트롤을 포함하여 현재 가지고있는 모든 코드보다 여전히 좋을 것입니다.

this sample of the AJAX CascadingDropDown control을 살펴보십시오.

(기본적으로) 수행해야 할 작업은 클라이언트 측에 필요한 데이터를 제공하고 웹 메소드를 가리키고 관련 매개 변수를 전달하도록 Extender를 구성하는 웹 서비스를 작성하는 것입니다. 당신이 가지고있는 것보다 적은 코드/HTML로 원한다.

서버 측 AJAX를 사용하지 않으려면 jQuery를 사용하여 위의 내용을 수행 할 수 있습니다 (또한 ViewState도 피하십시오).

+0

ajax 메서드는 작업에 필요한 정확히 수행합니다. 그리고 jQuery + asp.net을 검색 할 것입니다. 세 개의 컨트롤을 항상 활성화하여 원하는 순서로 필터링 할 수 있기를 바랍니다. 내가 자바 스크립트에서 어떻게 내가 그것을 필요로하는지, PHP에서 어떻게 쉽게 수행되는지를 푸는 것이 좋을 것이다. 하지만 javascript 변수 (각 드롭 다운 목록에서 ID 배열, 배열에서 허용되는 ID 조합을 하나씩 배열)를 설정하는 것은 어렵습니다. – TamusJRoyce

0

CascadingDropDown은 페이지의 유효성 검사를 강제로 해제하므로 내 고객이 사용할 수 있으면 허용하지 않습니다 (제대로 작동하지만 제거해야 함). asp : DropDownList AutoPostBack은 기본적으로 false입니다. 이 값을 true로 설정하면 선택 항목이 변경되었을 때 드롭 다운을 업데이트 할 수있었습니다. 나는 진정으로이 간단한 것을 놓치기위한 멍청한 행동이다.

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

는하지만 여전히 나에게 클라이언트에서 자바 스크립트를 삽입하는 방법을 얻고, 세 개의 드롭 다운리스트의의에 선택한 항목에 따라 사용할 협회의 숨겨진 컬렉션 기반을 필터링하지 않습니다. 그래서 그것에 대한 모든 정보가 크게 감사하겠습니다.

관련 문제