Я пытаюсь загрузить раскрывающийся список, связанный с таблицей в mysql, в веб-форме asp.net в vb. Я использую класс со следующим кодом:
Public Class ClCountries
Public Function Read(ByVal Opcion As Integer) As DataTable
Dim cnn As New MySqlConnection(ConfigurationManager.ConnectionStrings("cnnPortalSmart").ConnectionString)
Dim dt As New DataTable
Try
Dim cmd As New MySqlCommand("PA_COUNTRIES_SELECT", cnn)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.AddWithValue("@Opcion", Opcion)
cnn.Open()
dt.Load(cmd.ExecuteReader(), LoadOption.OverwriteChanges)
cnn.Close()
Catch ex As Exception
Dim msgError As String
msgError = ex.Message.ToString()
cnn.Close()
End Try
Return dt
End Function
End Class
Он вызывается из Page_Load () с помощью этого метода:
Sub LoadCountries()
Try
Dim dv As New DataView(New ClCountries().Read(1))
ddlCountry.DataSource = dv
ddlCountry.DataTextField = "Name"
ddlCountry.DataValueField = "ID"
ddlCountry.DataBind()
Dim li As New ListItem("Select Country", "0")
ddlCountry.Items.Insert(0, li)
Catch ex As Exception
End Try
End Sub
Строка подключения в aspx:
<connectionStrings>
<add name = "cnnPortalSmart" connectionString = "Data Source=IP_NUMBER;Initial Catalog=SCHEMA_NAME; User ID=root;Password=XXXX;" providerName = "MySql.Data.MySqlClient" />
</connectionStrings>
Спасибо.
Какие проблемы у вас возникают с этим кодом? Что не работает? Есть вещи, которые я мог бы сделать по-другому или более аккуратно, но в этом коде явно ничего не сломано.
Простите. проблема в том, что в раскрывающемся списке не отображаются данные.
Я отредактировал новый код в вопросе. Вот как мы это делаем ... читать код в комментариях больно;) Что будет, если убрать Try / Catch?
Спасибо. Если я удалю try / catch в классе, New ListItem в «Select Country», «0») не будет отображать текст «select country» в методе.
Я нашел несколько возможных решений для отображения элемента, добавленного из ListItem, но я хочу, чтобы вы включили как разметку DDL, так и метод Page_Load, на всякий случай.






Надеюсь, это поможет вам
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Me.IsPostBack Then
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As New SqlConnection(constr)
Using cmd As New SqlCommand("SELECT CustomerId, Name FROM Customers")
cmd.CommandType = CommandType.Text
cmd.Connection = con
con.Open()
ddlCustomers.DataSource = cmd.ExecuteReader()
ddlCustomers.DataTextField = "Name"
ddlCustomers.DataValueField = "CustomerId"
ddlCustomers.DataBind()
con.Close()
End Using
End Using
ddlCustomers.Items.Insert(0, New ListItem("--Select Customer--", "0"))
End If
End Sub
Я решил это, изменив строку подключения на:
<connectionStrings>
<add name = "cnnPortalSmart" connectionString = "server=XXXX;user id=XXXX;password=XXXXX!;persistsecurityinfo=True;database=XXXXX;SslMode=none" providerName = "MySql.Data.MySqlClient"/>
</connectionStrings>
в чем вопрос? какие-то проблемы? какие-то исключения?