ZohaibRazaTheDProgrammer Ответов: 2

Вызов gridview изнутри общедоступной общей функции?


Привет,

Моя проблема заключается в том, что я использую приведенный ниже код:

<System.Web.Services.WebMethod()> _
    Public Shared Function GetCurrentTime()

...
    GridView1.DataSource = SqlDataSource1
    GridView1.DataBind()


End Function


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

Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.


Пожалуйста, помогите мне решить эту проблему. Участники форума, не просто расскажите о проблеме с кодом, но и опубликуйте соответствующий код, который может решить эту проблему.

заранее спасибо.

Что я уже пробовал:

Public Shared Function GetCurrentTime()

...
    GridView1.DataSource = SqlDataSource1
    GridView1.DataBind()


End Function

2 Ответов

Рейтинг:
1

OriginalGriff

Вы не можете получить доступ к членам экземпляра изнутри Shared методы: в этом весь смысл Shared - он объявляет метод, который работает без необходимости создания экземпляра или даже без его создания. Общие методы не имеют никакого доступа к Me ссылка на объект.

Если вы хотите получить доступ к элементам управления (или другим не разделяемым объектам в вашем классе), этот метод не может быть Shared - это должен быть обычный метод экземпляра.


Рейтинг:
1

F-ES Sitecore

Это не ваша настоящая проблема, ваша настоящая проблема в том, что вы пытаетесь получить доступ к серверным элементам управления через веб-метод. Когда вы выполняете обратную передачу формы, вы отправляете много данных на сервер, и они проходят жизненный цикл страницы asp.net. Это позволяет asp.net воссоздавать состояние ваших элементов управления и обновлять их, а затем это обновленное состояние преобразуется в HTML для отображения в браузере. Когда вы вызываете веб-метод, единственными отправляемыми данными являются данные в параметрах, поэтому .net не может воссоздать элементы управления, он не запускает весь жизненный цикл страницы, и поскольку веб-метод не приводит к созданию всей страницы будучи повторно установленным, вы также не можете обновить элементы управления в своем веб-методе.

Для того, что вы хотите сделать, вы должны посмотреть на UpdatePanel, так как это компонент, предназначенный для облегчения того, что вы пытаетесь сделать, то есть обновить элементы управления через ajax.


ZohaibRazaTheDProgrammer

Спасибо за разъяснение. Я новичок в ASP .NET и Javascript. Не могли бы вы помочь мне с образцом кода?

F-ES Sitecore

Начать здесь

https://msdn.microsoft.com/en-us/library/bb386454.aspx