1

下午好,人们一直在尝试使用 sql 命令填充下拉列表,直到非常好,当我单击下拉列表时,它会显示所有项目,但是当我尝试单击下拉列表中的某个项目时,它总是返回第一个项目下拉列表....遵循代码,我想要做的是从下拉列表中获取选定的值和项目并将其保存在标签上以备将来使用。

我感谢所有可能的支持,

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    utilizador.Text = Me.Context.User.Identity.Name
    If (Not Page.IsPostBack) Then
        escolhePerfil()
    End If

    'DropDownPerfil.DataBind()
    lbperfil2.Text = DropDownPerfil.SelectedItem.Text
    lbnome.Text = DropDownPerfil.SelectedValue
End Sub


Function escolhePerfil() As Boolean
    Dim connstring As String = "Data Source=10.2.24.17;Persist Security Info=True;User ID=sa;Password=Pr0dUn1C0$qL;database=ePrimavera"
    Dim SQLData As New System.Data.SqlClient.SqlConnection(connstring)

    Dim cmdSelect As New System.Data.SqlClient.SqlCommand("SELECT  u.WindowsUser,u.Email ,g.Description, u.Login FROM [ePrimavera].[dbo].[PLT_Users] as  u,[ePrimavera].[dbo].[PLT_UserGroups] as ug, [ePrimavera].[dbo].[PLT_Groups] as g where u.ID = ug.UserID And ug.GroupID = g.ID and u.WindowsUser like 'bancounico\" & utilizador.Text & "'", SQLData)
    SQLData.Open()

    Dim dtrReader As System.Data.SqlClient.SqlDataReader = cmdSelect.ExecuteReader()

    If dtrReader.HasRows Then
        DropDownPerfil.DataValueField = "Login"
        DropDownPerfil.DataTextField = "Description"
        DropDownPerfil.DataSource = dtrReader
        DropDownPerfil.DataBind()
    End If
    SQLData.Close()

    Return True
End Function

.aspx

  <asp:DropDownList ID="DropDownPerfil" runat="server" 
      Height="16px" Width="202px" CssClass="DropBorderColor">
 </asp:DropDownList>
4

3 回答 3

0

试试下面的代码:

Protected Sub DropDownPerfil_SelectedIndexChanged(sender As Object, e As EventArgs)
        lbperfil2.Text = DropDownPerfil.SelectedItem.Text
        lbnome.Text = DropDownPerfil.SelectedValue
    End Sub
于 2012-08-22T08:10:01.493 回答
0

问题是您试图“过早”获得价值。该值在 Page_Load 中无效,因为控件的 OnLoad 事件在 Page 的 OnLoad (Page_Load) 事件之后触发。

方式,其他人写的正确,因为事件处理部分(包括控件的 onchanged 事件)将在加载部分之后处理。

有关更多详细信息,请查看MSDN 中的官方ASP.NET 生命周期站点

于 2012-08-22T08:27:56.723 回答
0

可能的原因是您分配给 DropDownList 的某些(如果不是全部)值Login多次出现。

然后,当您在 DDL 中选择一个项目时,如果该项目的值多次出现,则所选索引将突出显示第一个实例。要对此进行测试,请注释掉DropDownPerfil.DataValueField = "Login"

我确信在选择时,它会突出显示您打算选择的正确项目。

于 2012-08-22T10:26:15.850 回答