在webform上面有两个dropdownList,但是查询时要用选中的值,却得不到,不管我选择什么
dpLstCompany.SelectedValue的值总是""Private Sub lnkSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lnkSearch.Click
        Dim lsSQL As String
        Dim lsCompany As String        lsCompany = Me.dpLstCompany.SelectedValue
        lsSQL = "select QVL.*,QVL.ROWID from QVL where 1=1"
        If Me.dpLstCompany.SelectedValue <> "" Then lsSQL = lsSQL & " and company_no=" & dpLstCompany.SelectedValue & ""
        If Me.dpLstStatus.SelectedValue <> "" Then lsSQL = lsSQL & " and status=" & dpLstCompany.SelectedValue & ""
        If txtBrand.Text <> "" Then lsSQL = lsSQL & " and brand='" & txtBrand.Text & "'"
        If txtVDPN.Text <> "" Then lsSQL = lsSQL & " and vendor_pn='" & txtVDPN.Text & "'"
        If txtItem.Text <> "" Then lsSQL = lsSQL & " and item_no='" & txtItem.Text & "'"
        Session("LastSQL") = lsSQL
        DataGrid1.EditItemIndex = -1
        setDataBind(lsSQL)
    End Sub这是pageload 的代码,而且datatable的值是能够正确得到的
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim dttStatus As DataTable
        Dim dttCompany As DataTable
        If Not IsPostBack Then
            Session.Add("LastSQL", "select qvl.*,qvl.rowid from qvl")
            setDataBind(Session("LastSQL"))
        End If
        dttStatus = getStatus()
        dpLstStatus.DataSource = dttStatus
        dpLstStatus.DataTextField = "code_name"
        dpLstStatus.DataValueField = "code_id"
        dpLstStatus.DataBind()        dttCompany = getCompany()
        dpLstCompany.DataSource = dttCompany
        dpLstCompany.DataTextField = "company_name"
        dpLstCompany.DataValueField = "company_no"
        dpLstCompany.DataBind()
    End Sub

解决方案 »

  1.   

    If Not IsPostBack Then
                Session.Add("LastSQL", "select qvl.*,qvl.rowid from qvl")
                setDataBind(Session("LastSQL"))
           
            dttStatus = getStatus()
            dpLstStatus.DataSource = dttStatus
            dpLstStatus.DataTextField = "code_name"
            dpLstStatus.DataValueField = "code_id"
            dpLstStatus.DataBind()        dttCompany = getCompany()
            dpLstCompany.DataSource = dttCompany
            dpLstCompany.DataTextField = "company_name"
            dpLstCompany.DataValueField = "company_no"
            dpLstCompany.DataBind()
     End If
      

  2.   

    把拌定代码放在If Not IsPostBack中,不然你每次PostBack回发数据的时候都从新拌定。所以你无法获得选中的值。
      

  3.   

    Dear LoveCherry:
    Thanks a lot