Я пытаюсь использовать набор данных для отчета, но данные исчезают, когда я пытаюсь его использовать.Вот мой код по большей части:
Переменные:
Dim ResultsDataView As DataView
Dim ResultsDataSet As New DataSet
Dim ResultsTable As New DataTable
Dim SQLQuery As String
Поиск: здесь заполнена сетка данных в главном представлении.Данные отображаются идеально.
Private Sub Search(Optional ByVal Bind As Boolean = True, Optional ByVal SearchType As String = "", Optional ByVal SearchButton As String = "")
Dim SQLQuery As String
Dim ResultsDataSet
Dim LabelText As String
Dim MultiBudgetCenter As Integer = 0
SQLQuery = "A long and detailed SQL query that grabs N rows with 7 columns"
ResultsDataSet = RunQuery(SQLQuery)
ResultsTable = ResultsDataSet.Tables(0)
For Each row As DataRow In ResultsTable.Rows
For Each item In row.ItemArray
sb.Append(item.ToString + ","c)
Response.Write(item.ToString + "\n")
Response.Write(vbNewLine)
Next
sb.Append(vbCr & vbLf)
Next
'Response.End()
If Bind Then
BindData(ResultsDataSet)
End If
End Sub
Данные привязки: я думаю, что это является причиной проблемы.
Private Sub BindData(ByVal InputDataSet As DataSet)
ResultsDataView = InputDataSet.Tables("Results").DefaultView
ResultsDataView.Sort = ViewState("SortExpression").ToString()
ResultsGridView.DataSource = ResultsDataView
ResultsGridView.DataBind()
End Sub
Действие по отчетности: здесь я пытаюсь использовать таблицуданные.Но он отображается как ничто.
Protected Sub ReportButton_Click(sender As Object, e As EventArgs) Handles ReportButton.Click
For Each row As DataRow In ResultsTable.Rows
For Each item In row.ItemArray
Response.Write(item.ToString)
Next
Next
End Sub
Причина, по которой я пытаюсь просмотреть эти данные, заключается в том, чтобы как отображать данные в виде сетки в главном окне, так и экспортировать данные в CSV.Если существует другой способ экспорта SQL-запроса в CSV, я открыт для любых предложений.
Должно быть что-то, что я могу сделать, чтобы данные из SQL-запроса сохранялись через ReportButton_Click
метод.Я пытался скопировать данные, я пробовал глобальные переменные, я пробовал разные методы циклического прохождения набора данных.Чего мне не хватает?!
Спасибо всем заранее.
РЕДАКТИРОВАТЬ Вот Page_Load:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
'set focus to postback control
Dim x As String = GetPostBackControlName(Page)
If Len(x) > 0 Then
x = x.Replace("$", "_")
SetFocus(x)
End If
End If
If Not IsPostBack Then
ResultsGridView.AllowPaging = False
'Enable Gridview sorting
ResultsGridView.AllowSorting = True
'Initialize the sorting expression
ViewState("SortExpression") = "ID DESC"
'Populate the Gridview
Search()
End If
End Sub