Asp.net 错误:不能在DropDownList中选择多个项目

Asp.net 错误:不能在DropDownList中选择多个项目,asp.net,vb.net,Asp.net,Vb.net,这是我的代码,我收到一个错误..不能在DropDownList中选择多个项目。当页面加载时,在DDLMotality中选择ALL,但当我将DDLMotality.selectedvalue更改为任意值时,则无错误,但当我更改为ALL时,再次选择获取错误 更改表格后,请提交表格 表1.target=; 表1.action=; 表格1.提交 ' USED TO ADD REFERRING PHYSICIAN IN THE DROPDOWN DYNAMICALLY If CInt(Sess

这是我的代码,我收到一个错误..不能在DropDownList中选择多个项目。当页面加载时,在DDLMotality中选择ALL,但当我将DDLMotality.selectedvalue更改为任意值时,则无错误,但当我更改为ALL时,再次选择获取错误

更改表格后,请提交表格 表1.target=; 表1.action=; 表格1.提交

 ' USED TO ADD REFERRING PHYSICIAN IN THE DROPDOWN DYNAMICALLY 
    If CInt(Session("CenterID")) = 0 Then
        sql = "Select Ref_Phy_ID,Name from Ref_Phy_Master WHERE Ref_Phy_ID in(Select distinct Ref_Phy_ID from Patient_Details where Ref_Phy_ID <> '')"
    Else
        sql = "Select Ref_Phy_ID,Name from Ref_Phy_Master WHERE Ref_Phy_ID in(Select distinct Ref_Phy_ID from Patient_Details where Ref_Phy_ID <> '') And Center_ID = " & Session("CenterID")
    End If
    objDS = objFun.RunQuery(sql)
    ' USED TO REFRESH THE PAGE WHIN IT IS POSTED BACK 
    ' USED TO DISPLAY DEFAULT FIRST ITEM IN THE DROPDOWN 
    Dim Li1 As New ListItem()
    Li1.Text = "ALL"
    Li1.Value = ""
    cboRefPhy.Items.Add(Li1)
    ' USED TO COUNT THE STUDIES IN THE DROPDOWN 
    If (objDS.Tables(0).Rows.Count <> 0) Then
        ' USED TO CIRCULATE LOOP UPTO THE RECORD COUNT
        Dim i As Integer
        For i = 0 To objDS.Tables(0).Rows.Count - 1
            ' USED TO CREATE NEW ITEM IN THE DROPDOWN 
            Dim Li As New ListItem
            Li.Text = objDS.Tables(0).Rows(i)("Name").ToString()
            Li.Value = objDS.Tables(0).Rows(i)("Ref_Phy_ID").ToString()
            'USED TO ADD ITEMS IN THE DROPDOWN 
            cboRefPhy.Items.Add(Li)
        Next
    End If
    'USED TO SAVE THE CHANGES IN DATASET  
    objDS.AcceptChanges()
    ' USED TO CLOSE THE DATABASE CONNECTION 
    objDS.Dispose()
    cboRefPhy.ClearSelection()
    cboRefPhy.SelectedValue = Convert.ToString(Request.Form("cboRefPhy"))

    'USED TO ADD MODALITY IN THE DROPDOWN DYNAMICALLY
    If CInt(Session("CenterID")) = 0 Then
        sqlStudy = "Select Modality_ID,Modality from Hospital_Modality_Master WHERE Modality_ID in(Select distinct Study_ID from Patient_Details where Study_ID <> '')"
    Else
        sqlStudy = "Select Modality_ID,Modality from Hospital_Modality_Master WHERE Modality_ID in(Select distinct Study_ID from Patient_Details where Study_ID <> '') And Center_ID = " & Session("CenterID")
    End If
    'Dim objDS As New DataSet()
    objDS = objFun.RunQuery(sqlStudy)
    ' USED TO REFRESH THE PAGE WHIN IT IS POSTED BACK 
    ' USED TO DISPLAY DEFAULT FIRST ITEM IN THE DROPDOWN 
    'Dim Li1 As New ListItem()
    Li1.Text = "ALL"
    Li1.Value = ""
    ' Dim all As String
    ' all = "All"
    'Ddl_Modality.Items.Add(all)
    DDLModality.Items.Add(Li1)
    ' USED TO COUNT THE STUDIES IN THE DROPDOWN 
    If (objDS.Tables(0).Rows.Count <> 0) Then
        ' USED TO CIRCULATE LOOP UPTO THE RECORD COUNT
        Dim i As Integer
        For i = 0 To objDS.Tables(0).Rows.Count - 1
            ' USED TO CREATE NEW ITEM IN THE DROPDOWN 
            Dim Li As New ListItem
            Li.Text = objDS.Tables(0).Rows(i)("Modality").ToString()
            Li.Value = objDS.Tables(0).Rows(i)("Modality_ID").ToString()
            'USED TO ADD ITEMS IN THE DROPDOWN 
            DDLModality.Items.Add(Li)
        Next
    End If
    'USED TO SAVE THE CHANGES IN DATASET  
    objDS.AcceptChanges()
    ' USED TO CLOSE THE DATABASE CONNECTION 
    objDS.Dispose()
    DDLModality.ClearSelection()
    DDLModality.SelectedValue = Convert.ToString(Request.Form("DDLModality"))


    ' USED TO ADD STUDY IN THE DROPDOWN DYNAMICALLY 
    If CInt(Session("CenterID")) = 0 Then
        sqlStudy = "Select Study_ID,Study_Desc from Study_Master WHERE Study_ID in(Select distinct Study_ID from Patient_Details where Study_ID <> '')"
    Else
        sqlStudy = "Select Study_ID,Study_Desc from Study_Master WHERE Study_ID in(Select distinct Study_ID from Patient_Details where Study_ID <> '') And Center_ID = " & Session("CenterID")
    End If

    If (DDLModality.SelectedItem.Text <> "ALL") Then
        sqlStudy = sqlStudy & " AND Modality = '" & DDLModality.SelectedItem.Text & "'"

    End If
试一试


在设置ddl.SelectedValue之前,我面临着同样的问题。如果将一个已定义的ListItem(在本例中为Li1)添加到两个或多个dropdownlist,则在将selectedvalue分配给任何dropdownlist时会发生此错误

简单的解决方案是为单独的下拉列表(如Li1、Li2、Li3等)定义单独的列表项


我不明白背后的逻辑,但它是有效的

对不起,我不知道VB,但在C中,您可以在说DDLModality.SelectedValue=Convert.toString.Quest.FormDDLModality之前设置DDLModality.SelectedValue=-1。这将取消选择以前的任何选择,因此当您确实选择某个内容时,尚未选择值。在您编写代码时,很容易受到SQL注入攻击。请使用参数化查询。查看为什么需要DDLModality.SelectedValue=Convert.ToStringRequest.FormDDLModality设置DDLModality.SelectedValue=-1设置DDLModality后,我收到相同的错误。请为下拉列表发布呈现的标记好吗?下拉列表中是否有重复项?否//当页面加载时,请在DDLModality中选择全部,但当我更改时DDLModality.selectedvalue为任意值,然后无错误,但当我更改为ALL时再次出现错误..将Li2设置为新列表项Li2.Text=ALL Li2.value=DDLModality.Items.AddLi2
DDLModality.ClearSelection()
Dim Li2 As New ListItem()
      Li2.Text = "ALL"
      Li2.Value = ""  
      DDLModality.Items.Add(Li2)