Привязка выпадающего списка к выпадающему списку в detailsview ASP.NET C#

#c# #asp.net #detailsview

#c# #asp.net #detailsview

Вопрос:

Я пытаюсь привязать выпадающий список к элементу управления Detailsview на странице, где результат второго выпадающего списка зависит от первого. Я мог бы привязать один выпадающий список к Detailsview, но если я добавлю другой выпадающий список, где результат зависит от первого, в представлении сведений ничего не будет отображаться, пока вы не обновите страницу.

Итак, есть ли какой-либо способ, которым я мог бы автоматически опубликовать результат detailsview, если выбран второй выпадающий список? В настоящее время я изучаю это, но я не смог его получить.

Вот мой пример кода

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

Любая помощь была бы высоко оценена 😉

Заранее спасибо

Ответ №1:

Вы должны поместить свой зависимый выпадающий источник данных в поле родительского шаблона. это будет выглядеть следующим образом…

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