Раньше я заполнял GridView «созданными вручную» источниками данных в коде, выполняя это при загрузке страницы:
DataTable myData = SomeMethod(); //Returns a DataTable
myGrid.DataSource = myData;
myGrid.DataBind();
и всякий раз, когда я хотел загрузить данные вCSV-файл, я бы просто добавил следующее к событию Click кнопки:
DataTable csvData = new DataTable();
csvData = (DataTable)myGrid.DataSource;
//CSV construction, reponse send to browser, etc.
Это работает, потому что GridView уже привязан к данным во время загрузки страницы, поэтому данные доступны, когда достигается событие Click.
Но теперь я не могу заставить его работать, используя элемент управления SqlDataSource, который я добавил во время разработки (HTML).Этот SqlDataSource связан с элементом управления DropDown с автоматической обратной передачей, так что данные извлекаются при изменении выбора.
Я запускаю веб-сайт с данными, уже отображаемыми в GridView (EnableViewState = false, чтобы принудительно выполнить запрос взагрузку каждой страницы) и нажмите кнопку только для получения исключения, вызванного тем, что myGrid.DataSource имеет значение null.
Мой вопрос (наконец-то): я заметил, что событие click происходит до GridView_OnDataBound, но даже OnDataBound источник данных равен нулю.Как я могу получить данные из визуализированного GridView, чтобы разрешить загрузку?Или откуда мне попытаться его найти?