выпадающий список не объявлен. Он может быть недоступен из-за его уровня защиты

#asp.net #vb.net

#asp.net #vb.net

Вопрос:

Как вы можете видеть из закомментированного кода, я пытаюсь повлиять на выпадающий список модели selCurrentManuf.Text .

Я получаю эту ошибку

‘selCurrentManuf’ не объявлен. Он может быть недоступен из-за его уровня защиты.

Как это можно решить?

Я могу получить доступ к выпадающему списку в другой части страницы следующим образом..

 Dim sc1_currentmanuf As String = CType(e.Item.FindControl("selCurrentManuf"), DropDownList).Text
  

Однако в функции, которую я пытаюсь использовать, selCurrentManuf не имеет доступа к e

Комментарии:

1. возможно, вы захотите проверить модификатор доступа, щелкнуть правой кнопкой мыши на выпадающем элементе и проверить свойства.

2. извините, я не могу получить его в vs, я не могу редактировать только в notepad

Ответ №1:

     Dim sc1_currentmanuf As String = CType(dlContacts.Items(0).FindControl("selCurrentManuf"), DropDownList).Text
    Dim myQuery As String = "SELECT * FROM c5_model where c5_manufid = "   sc1_currentmanuf
  

Ответ №2:

Щелкните правой кнопкой мыши на вашей странице .aspx и выберите команду Преобразовать в веб-приложение.

Тогда вы сможете написать:

   Dim myQuery As String = 
    String.Format("SELECT * FROM c5_model WHERE c5_manuf = '{0}'", 
                  selCurrentManuf.SelectedItem.Text )
  

Комментарии:

1. у меня нет проекта в VS, он был размещен на веб-сервере, и я могу только вручную редактировать страницы aspx и aspx.vb

2. также, когда я попытался это сделать, я все равно получил ошибку … ‘selCurrentManuf’ не объявлен. Он может быть недоступен из-за его уровня защиты.

3. Загрузите его в Visual Studio; создайте новое решение. В какой-то момент вам захочется отредактировать этот проект в Visual Studio; нет лучшего времени, чем сейчас (когда он сломан).

4. Щелкните правой кнопкой мыши на вашей странице .aspx и выберите команду Преобразовать в веб-приложение. это действительно сработало чудесно только из-за сбоя файла конструктора?

Ответ №3:

Я предполагаю, что ваши функции находятся внутри класса в вашем App_Code или другой dll, а не в коде страницы.

Если это так, сделайте это вместо:

Я предполагаю, что у вас есть что-то подобное в коде вашей страницы asp:

 Protected Sub selCurrentManuf_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        GetCurrentModel(selCurrentManuf.Text)
End Sub
  

Измените код GetCurrentModel на:

 Function GetCurrentModel(Byval c5_manuf as String) As DataSet
    Dim mySession = System.Web.HttpContext.Current.Session
    Dim myQuery As String = "SELECT * FROM c5_model " 'where c5_manuf = "     c5_manuf 
    Dim myConnection As New MySqlConnection(mySession("localConn"))
    myConnection.Open()
    Dim myCommand As New MySqlCommand(myQuery, myConnection)
    Dim myDataAdapter = New MySqlDataAdapter(myCommand)
    Dim myDataset As New DataSet
    myDataAdapter.Fill(myDataset, "c5_model")
    Dim dr As DataRow = myDataset.Tables(0).NewRow       
    myDataset.Tables(0).Rows.Add(dr)      
    GetCurrentModel =  myDataset
    myConnection.Close()         
 End Function
  

Комментарии:

1. по-прежнему get ‘selCurrentManuf’ не объявлен. Он может быть недоступен из-за его уровня защиты.

2. Попробуйте проверить, правильно ли ваш ASPX-файл наследует ваш класс файла подкачки

3. как мне это сделать? все работает нормально, если я не пытаюсь получить доступ к selCurrentManu в коде

4. я расширил представление, возможно, это как-то связано с выпадающим списком, находящимся в списке данных?