ASP.NET - VB.NET - Сохранение динамически выбранного DataSourceID GridView в течение нескольких нажатий кнопок - PullRequest
0 голосов
/ 11 ноября 2009

У меня есть приложение, в котором мне нужно динамически выбирать источник SQLDataSource для GridView, чтобы я мог использовать 1 из 2 хранимых процедур в зависимости от того, кто вошел в систему.

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

If Session("SiteType") = "Type1" Then
     GridView1.DataSourceID = "SqlDataSource2"
Else
     GridView1.DataSourceID = "SqlDataSource1"
End If
GridView1.DataBind()

Это происходит, когда вы нажимаете кнопку, которая открывает панель с видом сетки.

Затем пользователь вносит изменения (в основном настраивая текстовое поле на одном или нескольких элементах сетки) и затем нажимает «сохранить». Однако gridview больше не знает свой DataSourceID, как только это происходит, поэтому, когда я пытаюсь просмотреть строки gridview - их нет.

Если при нажатии кнопки сохранения я введу тот же код, он (конечно) удаляет любые изменения данных, которые я внес в форму.

Итак, проще говоря - как мне динамически выбирать SqlDataSource, но только один раз, чтобы программа затем сохраняла этот SqlDataSourceID, связанный с gridview, до конца цикла? Это вещь ViewState? Я не совсем понимаю ViewState ...

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 11 ноября 2009

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

Добавьте это в обработчик событий загрузки страниц:

If Page.IsPostback Then
    If Session("SiteType") = "Type1" Then
       GridView1.DataSourceID = "SqlDataSource2"
    Else
       GridView1.DataSourceID = "SqlDataSource1"
    End If
    GridView1.DataBind()
End If
0 голосов
/ 12 ноября 2009

Я бы просто пошел и сохранил его как переменную сеанса. Ex. Сеанс ("источник данных") = myDataSource

Затем вы устанавливаете источник данных вашего GridView следующим образом: MyGridView.datasource = session ("источник данных") MyGridView.bind ()

Это должно сделать это.

Надеюсь, это поможет Дэвид.

0 голосов
/ 11 ноября 2009

Я сделал это, просто поместив параметр в файл cookie, и, когда мне это понадобится, снова вытащил этот параметр из файла cookie.

Cookies, Session и ViewState обычно работают одинаково. Это простой способ сохранения информации в течение ограниченного периода времени. Вы создаете ключ, добавляете значение, а затем сохраняете ключ на том носителе, который вы собираетесь использовать, будь то файл cookie, сеанс или представление состояния. Когда вам снова понадобится значение, вы просто находите ключ в постоянном носителе, загружаете пару ключ / значение и затем получаете доступ к значению, обычно помещая его обратно в переменную sometype.

Удачи, и надеюсь, что это поможет некоторым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...