2011-04-29 100 views
5

我想要將Dropdownlist綁定到頁面中的Detailsview控件,其中第二個Dropdownlist的結果取決於第一個Dropdownlist。我可以將一個Dropdownlist綁定到Detailsview,但如果我添加另一個Dropdownlist,其結果取決於第一個Dropdownlist,則細節視圖將不會顯示任何內容,除非刷新頁面。將dropdownlist綁定到dropdownlist以查看詳細信息ASP.NET C#

那麼有什麼辦法可以自動發佈detailsview的結果,如果第二個下拉列表被選中?我目前正在學習this,但我無法得到它。

這裏是我的示例代碼

<%@ 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> 

任何幫助,將不勝感激;)

在此先感謝

回答

4

你必須把你的相關數據源下拉列表中父模板領域。它會看起來像...

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