Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 下拉列表级联问题:如何级联两个下拉列表_Asp.net_Database_Vb.net_Entity Framework_Drop Down Menu - Fatal编程技术网

Asp.net 下拉列表级联问题:如何级联两个下拉列表

Asp.net 下拉列表级联问题:如何级联两个下拉列表,asp.net,database,vb.net,entity-framework,drop-down-menu,Asp.net,Database,Vb.net,Entity Framework,Drop Down Menu,我正在尝试使用ASP和VB级联下拉列表 1st drop down --> Sex Type > Male > Female 2nd Drop Down -->Status > Orphan > Married

我正在尝试使用ASP和VB级联下拉列表

1st drop down   --> Sex Type
                            > Male
                            > Female
2nd Drop Down   -->Status
                            > Orphan
                            > Married
                            > UnMarried
                            > Divorced
                            > Widow
                            > Special Need
                            > Normal
现在,
如果从第一个下拉列表中选择男性,则从第二个下拉列表中选择(孤儿、特殊需要、已婚、未婚、离婚、寡妇和正常人)

如果从第一个下拉列表中选择了女性,则从第二个下拉列表中选择(孤儿、特殊需要和正常)

我使用实体从数据库中获取drop dwons的数据

VB代码

context As New EGrantsModel.Entities

ddlSexType.DataSource = context.SEXTYPE
ddlSexType.DataValueField = "SEXTYPE"
ddlSexType.DataTextField = "SEXTYPE"
ddlSexType.DataBind()

ddlCitizenStatus.DataSource = context.CITIZENSTATUS
ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
ddlCitizenStatus.DataBind()
<div class="labelinput">
 <asp:Label ID="lblSexType" CssClass="lblwidth" runat="server" Text="">Sex Type</asp:Label>
 <asp:DropDownList ID="ddlSexType" runat="server"/>
   </div>

 <div class="labelinput">
   <asp:Label ID="lblCitizenStatus" CssClass="lblwidth" runat="server" Text="">Status</asp:Label>
    <asp:DropDownList ID="ddlCitizenStatus" runat="server"/>
     </div>
Protected Sub ddlSexType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlSexType.SelectedIndexChanged
    Try

        Dim context As New EGrantsModel.Entities
        If (ddlSexType.SelectedValue = "Female") Then
            Dim femaleDataSource As Object
            femaleDataSource = (From femaleDS In context.CITIZENSTATUS _
                                Where femaleDS.ISFEMALE = "1" And femaleDS.ISMALE = "0" AndAlso femaleDS.COMMON = "1"
                                Select femaleDS)
            ddlCitizenStatus.DataSource = femaleDataSource
            ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
            ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
            ddlCitizenStatus.DataBind()
        ElseIf (ddlSexType.SelectedValue = "Male") Then
            Dim maleDataSource As Object
            maleDataSource = (From femaleDS In context.CITIZENSTATUS _
                                Where femaleDS.ISFEMALE = "0" And femaleDS.ISMALE = "1" AndAlso femaleDS.COMMON = "1"
                                Select femaleDS)
            ddlCitizenStatus.DataSource = maleDataSource
            ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
            ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
            ddlCitizenStatus.DataBind()
        End If
    Catch ex As Exception
        callErrorPage(ex.Message, ex.InnerException)
    End Try
End Sub
ASP代码

context As New EGrantsModel.Entities

ddlSexType.DataSource = context.SEXTYPE
ddlSexType.DataValueField = "SEXTYPE"
ddlSexType.DataTextField = "SEXTYPE"
ddlSexType.DataBind()

ddlCitizenStatus.DataSource = context.CITIZENSTATUS
ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
ddlCitizenStatus.DataBind()
<div class="labelinput">
 <asp:Label ID="lblSexType" CssClass="lblwidth" runat="server" Text="">Sex Type</asp:Label>
 <asp:DropDownList ID="ddlSexType" runat="server"/>
   </div>

 <div class="labelinput">
   <asp:Label ID="lblCitizenStatus" CssClass="lblwidth" runat="server" Text="">Status</asp:Label>
    <asp:DropDownList ID="ddlCitizenStatus" runat="server"/>
     </div>
Protected Sub ddlSexType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlSexType.SelectedIndexChanged
    Try

        Dim context As New EGrantsModel.Entities
        If (ddlSexType.SelectedValue = "Female") Then
            Dim femaleDataSource As Object
            femaleDataSource = (From femaleDS In context.CITIZENSTATUS _
                                Where femaleDS.ISFEMALE = "1" And femaleDS.ISMALE = "0" AndAlso femaleDS.COMMON = "1"
                                Select femaleDS)
            ddlCitizenStatus.DataSource = femaleDataSource
            ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
            ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
            ddlCitizenStatus.DataBind()
        ElseIf (ddlSexType.SelectedValue = "Male") Then
            Dim maleDataSource As Object
            maleDataSource = (From femaleDS In context.CITIZENSTATUS _
                                Where femaleDS.ISFEMALE = "0" And femaleDS.ISMALE = "1" AndAlso femaleDS.COMMON = "1"
                                Select femaleDS)
            ddlCitizenStatus.DataSource = maleDataSource
            ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
            ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
            ddlCitizenStatus.DataBind()
        End If
    Catch ex As Exception
        callErrorPage(ex.Message, ex.InnerException)
    End Try
End Sub

性别类型
地位

有谁能在这方面给我指点一下吗。感谢您

关于第二个下拉列表中ddlSexType bind的选定索引更改事件。 在第一个下拉列表中选中所选项目,如果该项目等于男性,则绑定相应的项目。 例如:

选中此项:

Public Class WebForm4
    Inherits System.Web.UI.Page

    Private Sub CitizenBind(ByVal strSexType As String)

        Dim lstCitizenStatus As New List(Of CitizenStatus)

        With lstCitizenStatus
            .Add(New CitizenStatus("1", "Orphan"))
            .Add(New CitizenStatus("2", "Married"))
            .Add(New CitizenStatus("3", "UnMarried"))
            .Add(New CitizenStatus("4", "Divorced"))
            .Add(New CitizenStatus("5", "Widow"))
            .Add(New CitizenStatus("6", "Special Need"))
            .Add(New CitizenStatus("7", "Normal"))
        End With

        Me.ddlCitizenStatus.Items.Clear()

        With Me.ddlCitizenStatus
            .DataSource = lstCitizenStatus
            .DataValueField = "CitizenStatusId"
            .DataTextField = "CitizenStatusT"
            .DataBind()
        End With

        If strSexType.Contains("F") Then

            Dim lstCitizenStatusRemove As New List(Of CitizenStatus)
            With lstCitizenStatusRemove
                .Add(New CitizenStatus("2", "Married"))
                .Add(New CitizenStatus("3", "UnMarried"))
                .Add(New CitizenStatus("4", "Divorced"))
                .Add(New CitizenStatus("5", "Widow"))
            End With

            For Each lstCS As CitizenStatus In lstCitizenStatusRemove
                Me.ddlCitizenStatus.Items.Remove(New ListItem(lstCS.CitizenStatusT.ToString(), lstCS.CitizenStatusId.ToString()))
            Next

        End If

    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not Page.IsPostBack Then

            Dim lstSexType As New List(Of SexType)
            lstSexType.Add(New SexType("Male"))
            lstSexType.Add(New SexType("Female"))

            With Me.ddlSexType
                .DataSource = lstSexType
                .DataValueField = "SexTypeT"
                .DataTextField = "SexTypeT"
                .DataBind()
            End With

            CitizenBind("ALL")

        End If

    End Sub

    Protected Sub ddlSexType_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ddlSexType.SelectedIndexChanged

        CitizenBind(Me.ddlSexType.SelectedValue)

    End Sub

End Class

如果您对代码有任何疑问,请告诉我。

这就是我解决问题的方法

我只是在表中添加了三个字段

1- ISMALE

2- ISFEMALE

3- COMMON
如果男性和女性身份相同,则将
设置为公共
为真

对于男性身份,将ISMALE设为True,ISFEMALE设为False

并将女性身份设置为
ISFEMALE
True和ISMALEFalse

VB代码

context As New EGrantsModel.Entities

ddlSexType.DataSource = context.SEXTYPE
ddlSexType.DataValueField = "SEXTYPE"
ddlSexType.DataTextField = "SEXTYPE"
ddlSexType.DataBind()

ddlCitizenStatus.DataSource = context.CITIZENSTATUS
ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
ddlCitizenStatus.DataBind()
<div class="labelinput">
 <asp:Label ID="lblSexType" CssClass="lblwidth" runat="server" Text="">Sex Type</asp:Label>
 <asp:DropDownList ID="ddlSexType" runat="server"/>
   </div>

 <div class="labelinput">
   <asp:Label ID="lblCitizenStatus" CssClass="lblwidth" runat="server" Text="">Status</asp:Label>
    <asp:DropDownList ID="ddlCitizenStatus" runat="server"/>
     </div>
Protected Sub ddlSexType_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlSexType.SelectedIndexChanged
    Try

        Dim context As New EGrantsModel.Entities
        If (ddlSexType.SelectedValue = "Female") Then
            Dim femaleDataSource As Object
            femaleDataSource = (From femaleDS In context.CITIZENSTATUS _
                                Where femaleDS.ISFEMALE = "1" And femaleDS.ISMALE = "0" AndAlso femaleDS.COMMON = "1"
                                Select femaleDS)
            ddlCitizenStatus.DataSource = femaleDataSource
            ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
            ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
            ddlCitizenStatus.DataBind()
        ElseIf (ddlSexType.SelectedValue = "Male") Then
            Dim maleDataSource As Object
            maleDataSource = (From femaleDS In context.CITIZENSTATUS _
                                Where femaleDS.ISFEMALE = "0" And femaleDS.ISMALE = "1" AndAlso femaleDS.COMMON = "1"
                                Select femaleDS)
            ddlCitizenStatus.DataSource = maleDataSource
            ddlCitizenStatus.DataValueField = "CITIZENSTATUSID"
            ddlCitizenStatus.DataTextField = "CITIZENSTATUS"
            ddlCitizenStatus.DataBind()
        End If
    Catch ex As Exception
        callErrorPage(ex.Message, ex.InnerException)
    End Try
End Sub
我对VB真的很陌生,所以如果有人认为这是一个冗长的方法,那么请更新我,以获得更好的方法


再次感谢Waqar Janjua和CoderRoller的宝贵时间和专业知识

谢谢你的回答,但事实并非如此。在选择男性时,我也在尝试过滤数据。@AbdulAziz ok。您将为第二个下拉列表绑定的数据存在于单个表中,您希望对其进行筛选吗?是的,这就是我想要完成的。我的意思是,若我选择“女性”,那个么选择表中的所有项目就可以了,但若我选择“男性”,它只过滤一些项目。我真的很感谢你的帮助。非常感谢CoderRoller的友好和慷慨的回复,这真的对我很有帮助,只是告诉我我是如何解决我的问题的,我的答案如下,但我接受你的答案。