Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        '在此处放置初始化页的用户代码
        bindDL4()
    End Sub    Private Sub bindDL4()
        Dim SQL As String
        SQL = "select ITEM_CODE,ITEM_NAME from BISFMMAMES where MYFLG21='QMQ'"
        DL4.DataSource = getDataset(SQL)
        DL4.DataTextField = "ITEM_NAME"
        DL4.DataValueField = "ITEM_CODE"
        DL4.DataBind()
        DL4.Items.Insert(0, New ListItem(""))
    End Sub    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        DataGrid1.CurrentPageIndex = 0
        bindDG()
end sub     Private Sub bindDG()
        Dim SQL As String
        SQL = "... WHERE 1=1 "//略去好多字
        If DL4.SelectedIndex <> 0 Then SQL += " AND QMTDMQBGM.ITEM_CODE = '" + DL4.SelectedValue + "'"
        If DL1.SelectedIndex <> 0 Then SQL += " AND QMTDMQBGM.QUALITY ='" + DL1.SelectedValue + "'"
        DataGrid1.DataSource = getDataset(SQL)
        DataGrid1.DataBind()
    End Sub其中DL1是事先绑死的,DL4是从数据库取数据绑定的,在页上上可以显示出数据.但经追踪发现, 永远:DL4.SelectedIndex=0.

解决方案 »

  1.   

    bindDL4()不能放在Load里,应该只在页面初次加载的时候Load,不然用户每次触发刷新时都加载,选择结果当然保留不下来了C#里的写法是
    if(!IsPostBack)//非刷新的时候
    { bindDL4();}你对应换成VB.NET的写法吧
      

  2.   

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
       if not IsPostBack then
            bindDL4()
      end if
    End Sub
      

  3.   

    Page_Load事件在每次回传服务器时都会先于Button1_Click执行,如果在此每次都重新绑定了下拉框,那就取不到之前的选中行了~
      

  4.   

    剛經歷過
    就是這里
    if(!IsPostBack)
            bindDL4()