0

フォーム ビューで 2 つのドロップダウン リストを作成しようとしています。2 番目のドロップ ダウンに表示される値は、最初のドロップ ダウンに依存しています。最初のリストには、SQL テーブル「Classes」に含まれるクラス番号が含まれ、2 番目のリストにはドロップダウン リストには、同じ SQL テーブル「Classes」内のクラス セクションが含まれています。クラス番号を選択して、そのクラス番号に対応するセクションのみをポップアップ表示できるようにしたいと考えています。

クラス表の例:

Number:   Section:   SLN:  
210       1          A-1  
210       2          A-2  
210       3          A-3  
340       1          B-1  
340       7          B-7 

私は現在、番号の最初のリストを使用して適切に設定しています

   <asp:DropDownList ID="ddlNumber" runat="server" 
    DataSourceID="SqlDSClasses"
     AutoPostBack="True" DataTextField="Number" DataValueField="Number">
    </asp:DropDownList> 
for the drop down and

<asp:SqlDataSource ID="SqlDSClasses" runat="server"       
ConnectionString="<%$ ConnectionStrings:ReinstatementCS %>" 
SelectCommand="SELECT [Prefix], [Number], [Location], [SLN],                              
[StartTime], [EndTime], [ClassDay], [ClassCredit], [ClassSection] FROM [Classes]">   
</asp:SqlDataSource>
for the corresponding SqlDataSource

これまで私は使用しようとしました

SELECT [ClassSection] FROM [Classes] WHERE [Number] = NumberDropDownList.DataValueField
for the Section list:

<asp:DropDownList ID="ClassSectionDropDownList" runat="server" DataSourceID="SqlDSNumSec" 
                                            DataTextField="ClassSection" DataValueField="ClassSection"  AutoPostBack="True">
                                        </asp:DropDownList>

使用されているフォーム ビューは次のように設定されます。

<asp:FormView ID="FVStudentClass" runat="server" DataSourceID="SqlDSStudentClass"
                        DataSourceID2="SqlDSAccess" EmptyDataText="Student Class Not Completed">
                        <EditItemTemplate>
                            <table style="width:100%;">
                                <tr>
                                    <td>
                                        Prefix:
                                    </td>
                                    <td>
                                        UCOLL</td>
                                    <td>
                                        Number:
                                    </td>
                                    <td>
                                        <asp:DropDownList ID="ddlNumber" runat="server" DataSourceID="SqlDSClasses"  AutoPostBack="True"
                                            DataTextField="Number" DataValueField="Number">
                                        </asp:DropDownList>
                                    </td>

                                    <td>

                                        Section:
                                    </td>
                                    <td>
                                        <asp:DropDownList ID="SectionDropDownList" runat="server" DataSourceID="SqlDSNumSec" 
                                            DataTextField="Section" DataValueField="Section"  AutoPostBack="True">
                                        </asp:DropDownList>
                                    </td>
                                </tr>
                            </table>
                            <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update"
                                Text="Update" />
                            &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" CausesValidation="False"
                                CommandName="Cancel" Text="Cancel" />
                        </EditItemTemplate>
                        <InsertItemTemplate>
                            IsTransfer:
                            <asp:CheckBox ID="IsTransferCheckBox" runat="server" 
                                Checked='<%# Bind("IsTransfer") %>' />
                            <br />
                            Prefix:
                            <asp:TextBox ID="PrefixTextBox" runat="server" Text='<%# Bind("Prefix") %>' />
                            <br />
                            Number:
                            <asp:TextBox ID="NumberTextBox" runat="server" Text='<%# Bind("Number") %>' />
                            <br />
                            Section:
                            <asp:TextBox ID="SectionTextBox" runat="server" 
                                Text='<%# Bind("Section") %>' />
                            <br />
                            ID:
                            <asp:TextBox ID="IDTextBox" runat="server" Text='<%# Bind("ID") %>' />
                            <br />
                            <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert"
                                Text="Insert" />
                            &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False"
                                CommandName="Cancel" Text="Cancel" />
                        </InsertItemTemplate>
                        <ItemTemplate>
                            <table style="width:100%;">
                                <tr>
                                    <td>
                                        Prefix:</td>
                                    <td>
                                        <asp:Label ID="PrefixLabel" runat="server" Text='<%# Bind("Prefix") %>' />
                                    </td>
                                    <td>
                                        Number:</td>
                                    <td>
                                        <asp:Label ID="NumberLabel" runat="server" Text='<%# Bind("Number") %>' />
                                    </td>
                                    <td>
                                        ClassSection:</td>
                                    <td>
                                        <asp:Label ID="ClassSectionLabel" runat="server" 
                                            Text='<%# Bind("ClassSection") %>' />
                                    </td>
                                </tr>
                                <tr>
                                    <td>
                                        IsTransfer:</td>
                                    <td>
                                        <asp:CheckBox ID="IsTransferCheckBox" runat="server" 
                                            Checked='<%# Bind("IsTransfer") %>' Enabled="false" />
                                    </td>
                                </tr>
                            </table>
                            <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" CommandName="Edit"
                                Text="Edit" />
                        </ItemTemplate>
                    </asp:FormView>

SqlDataSource を使用:

<asp:SqlDataSource ID="SqlDSStudentClass" runat="server" ConnectionString="<%$ ConnectionStrings:ReinstatementCS %>"

                        DeleteCommand="DELETE FROM [StudentClass] WHERE [SLN] = @SLN" 
                        InsertCommand="INSERT INTO [StudentClass] ([SLN],[ID]) VALUES (@SLN, @ID)"
                        SelectCommand="SELECT DISTINCT Classes.Number, Classes.Section, StudentClass.ID
FROM 
    StudentClass 
    LEFT JOIN AccessList ON AccessList.ALID = StudentClass.ID
    JOIN Classes ON StudentClass.SLN = Classes.SLN
WHERE ([SLN] = @SLN)" 
    <!--AccessList just gives extra information to the user-->                    
                        UpdateCommand="UPDATE [StudentClass] SET [SLN] = @SLN, [ID] = @ID WHERE [SLN] = @SLN">

                        <DeleteParameters>
                            <asp:Parameter Name="SLN" Type="Int32" />
                        </DeleteParameters>
                        <InsertParameters>
                            <asp:Parameter Name="SLN" Type="String" />
                            <asp:Parameter Name="ID" Type="String" />
                        </InsertParameters>
                        <SelectParameters>
                            <asp:QueryStringParameter Name="ID" QueryStringField="ALID" 
                                Type="String" />
                        </SelectParameters>
                        <UpdateParameters>
                            <asp:Parameter Name="ID" Type="String" />
                            <asp:Parameter Name="SLN" Type="Int32" />
                        </UpdateParameters>
                    </asp:SqlDataSource>

上記の表の例を使用した実際のフォームの例:

Number Drop Down:
210                ->   select 210     
340  

Section Drop Down:
1
2                  -> select 3
3
4

2 に答える 2

2

この記事を見てください:

http://csharpdotnetfreak.blogspot.com/2009/03/populate-dropdown-based-selection-other.html

やりたいことを実現する方法を説明します。

また、代わりに AJAX を使用することもできます: http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/CascadingDropDown/CascadingDropDown.aspx

于 2013-05-21T21:49:38.007 に答える
1

私はそれを行う方法を考え出しました:私のC#コードビハインドは次のようになります:

protected void ddlNumber_SelectedIndexChanged(object sender, EventArgs e)
{
    DropDownList ddlNumber = FVStudentClass.FindControl("ddlNumber") as DropDownList;

    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ReinstatementCS"].ConnectionString);
    SqlCommand myCommand = new SqlCommand("SELECT DISTINCT ClassSection FROM Classes WHERE Number = " + ddlNumber.Text);
    myCommand.Connection = con;
    SqlDataAdapter da = new SqlDataAdapter(myCommand);
    DataTable dt = new DataTable();
    da.Fill(dt);

    DropDownList ddlSection = FVStudentClass.FindControl("ddlSection") as DropDownList;
    ddlSection.DataSource = dt;
    ddlSection.DataTextField = "ClassSection";
    ddlSection.DataValueField = "ClassSection";
    ddlSection.DataBind();
    ddlSection.Items.Insert(0, "--Select--");
}

そして私の.aspxドロップダウン:ddlNumber:

<asp:DropDownList ID="ddlNumber" runat="server" DataSourceID="SqlDSClasses"  AutoPostBack="True" DataTextField="Number" DataValueField="Number"   onselectedindexchanged="ddlNumber_SelectedIndexChanged">
</asp:DropDownList>

ddlセクション:

<asp:DropDownList ID="ddlSection" runat="server"  AutoPostBack="True"                                                     onselectedindexchanged="ddlSection_SelectedIndexChanged">
</asp:DropDownList>

Nikita http://csharpdotnetfreak.blogspot.com/2009/03/populate-dropdown-based-selection-other.htmlからのリンクを組み合わせてこれを見つけました

およびこの他のページ: http: //forums.asp.net/t/1617449.aspx (最初の回答のすべてのdivを無視してください)

于 2013-05-22T20:13:15.943 に答える