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

考えられる理由は、DropDownList に割り当てている値の一部 (すべてではないにしても)Loginが複数回発生することです。

DDL で項目を選択すると、その項目の値が複数回出現すると、選択したインデックスによって最初のインスタンスが強調表示されます。これをテストするには、コメントアウトしますDropDownPerfil.DataValueField = "Login"

選択すると、選択しようとしていた正しいアイテムが強調表示されると確信しています。

于 2012-08-22T10:26:15.850 に答える
0

問題は、「早すぎる」値を取得しようとしていることです。コントロールの OnLoad イベントが Page の OnLoad (Page_Load) イベントの後に発生したため、値は Page_Load では有効ではありません。

イベント処理セクション (コントロールの onchanged イベントを含む) は Load セクションの後に処理されるため、他の人が書いた方法は正しいです。

詳細については、MSDN の公式ASP.NET ライフ サイクルサイトを確認してください。

于 2012-08-22T08:27:56.723 に答える