2011-04-29 15 views
5

Estoy intentando vincular una lista desplegable a un control de vista de detalles en una página donde el resultado de la segunda lista desplegable depende de la primera. Podría vincular una sola lista desplegable a una vista de detalles, pero si agrego otra lista desplegable donde el resultado depende de la primera, la vista de detalles no mostrará nada a menos que actualice la página.Enlazar lista desplegable a la lista desplegable para ver detalles ASP.NET C#

Entonces, ¿hay alguna forma de que pueda publicar el resultado de la vista detallada automáticamente si se selecciona el segundo menú desplegable? Actualmente estoy estudiando this pero no pude conseguirlo.

Aquí está mi código de ejemplo

<%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" AutoEventWireup="true" CodeBehind="Search.aspx.cs" Inherits="LibrarySystem.Member.Search" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> 
    <h3> 
     Search</h3> 
    <p> 
     Choose a category 
     <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" 
      DataSourceID="categoryDataSource" DataTextField="name" 
      DataValueField="categoryid"> 
     </asp:DropDownList> 
     <asp:SqlDataSource ID="categoryDataSource" runat="server" 
      ConnectionString="<%$ ConnectionStrings:LibrarySystemConnectionString %>" 
      SelectCommand="SELECT categoryid, name FROM dbo.TblCategory"> 
     </asp:SqlDataSource> 
    </p> 
    <p> 
     Choose a title 
     <asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" 
      DataSourceID="bookDataSource" DataTextField="booktitle" DataValueField="bookid"> 
     </asp:DropDownList> 
     <asp:SqlDataSource ID="bookDataSource" runat="server" 
      ConnectionString="<%$ ConnectionStrings:LibrarySystemConnectionString %>" 

      SelectCommand="SELECT [categoryid], [booktitle], [bookid] FROM [TblBooks] WHERE ([categoryid] = @categoryid)"> 
      <SelectParameters> 
       <asp:ControlParameter ControlID="DropDownList1" Name="categoryid" 
        PropertyName="SelectedValue" Type="Int32" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 
    </p> 
    <p> 
     <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
      CellPadding="4" DataKeyNames="bookid" DataSourceID="bookdetailsDataSource" 
      ForeColor="#333333" GridLines="None"> 
      <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
      <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" /> 
      <RowStyle BackColor="#EFF3FB" /> 
      <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" /> 
      <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
      <Fields> 
       <asp:BoundField DataField="bookid" HeaderText="ID/ISBN" ReadOnly="True" 
        SortExpression="bookid" /> 
       <asp:BoundField DataField="booktitle" HeaderText="Title" 
        SortExpression="booktitle" /> 
       <asp:BoundField DataField="lastname" HeaderText="Author" 
        SortExpression="lastname" /> 
       <asp:BoundField DataField="firstname" HeaderText="" 
        SortExpression="firstname" /> 
       <asp:BoundField DataField="description" HeaderText="Description" 
        SortExpression="description" /> 
       <asp:BoundField DataField="name" HeaderText="Category" SortExpression="name" /> 
       <asp:BoundField DataField="dateadded" HeaderText="Date added" 
        SortExpression="dateadded" /> 
       <asp:BoundField DataField="quantity" HeaderText="No. of copies" 
        SortExpression="quantity" /> 
       <asp:BoundField DataField="EmployeeID" HeaderText="Reserved by" 
        SortExpression="EmployeeID" /> 
       <asp:BoundField DataField="reservedate" HeaderText="Reserved date" 
        SortExpression="reservedate" /> 
       <asp:BoundField DataField="statusname" HeaderText="Status" 
        SortExpression="statusname" /> 
      </Fields> 
      <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
      <EditRowStyle BackColor="#2461BF" /> 
      <AlternatingRowStyle BackColor="White" /> 
     </asp:DetailsView> 

Cualquier ayuda sería muy apreciada;)

Gracias de antemano

Respuesta

4

Usted tiene que poner su fuente de datos dependiente desplegable en el campo de la plantilla padre. se verá como ...

<asp:TemplateField HeaderText="Category"> 
     <InsertItemTemplate> 
     <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" DataSourceID="categoryDataSource" 
         DataTextField="name" DataValueField="categoryid"> 
        </asp:DropDownList> 
        <asp:SqlDataSource ID="categoryDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:LibrarySystemConnectionString %>" 
         SelectCommand="SELECT categoryid, name FROM dbo.TblCategory"></asp:SqlDataSource> 
        <asp:SqlDataSource ID="bookDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:LibrarySystemConnectionString %>" 
         SelectCommand="SELECT [categoryid], [booktitle], [bookid] FROM [TblBooks] WHERE ([categoryid] = @categoryid)"> 
         <SelectParameters> 
          <asp:ControlParameter ControlID="DropDownList1" Name="categoryid" PropertyName="SelectedValue" 
           Type="Int32" /> 
         </SelectParameters> 
        </asp:SqlDataSource> 
       </InsertItemTemplate> 
      </asp:TemplateField> 

    <asp:TemplateField HeaderText="Title"> 
       <InsertItemTemplate> 
        <asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" DataSourceID="bookDataSource" 
         DataTextField="booktitle" DataValueField="bookid"> 
        </asp:DropDownList> 
       </InsertItemTemplate> 
      </asp:TemplateField> 
Cuestiones relacionadas