IListSource не содержит источников данных - PullRequest
0 голосов
/ 11 мая 2018
  • Хотите знать, если кто-то может помочь вообще?- Я построил веб-сайт в VWD 2010 с использованием .vb, и все отлично работает локально, но когда я публикую его в IIS, я получаю сообщение об ошибке:

System.Web.HttpException:IListSource не содержит источников данных.

Я проверил & разрешения для БД (насколько я знаю, все в порядке - я даже использовал это на БД):

USE master
GO
sp_grantlogin 'IIS APPPOOL\DefaultAppPool'

USE AuditLogons
GO
sp_grantdbaccess 'IIS APPPOOL\DefaultAppPool', 'DefaultAppPool'

Что сработало нормально - я немного растерялся, так как думаю, что это должно сработать, но я очень новичок в .VB и просто хотел бы, чтобы это работало действительно.- Я много гуглил и внес множество изменений в web.config и т. Д., Но уверен, что это действительно просто.Любая помощь будет оценена, код ниже:

Imports System.Data
Imports System.Data.SqlClient
Imports System.IO

Partial Class _Default
Inherits System.Web.UI.Page
Private _getData As DataSet
Dim ds As Object

Private Property Yesterday As String
Private Property queryString As String

Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) Handles GridView1.PageIndexChanging
    GridView1.PageIndex = e.NewPageIndex
    BindDataAllUsers()
    GridView1.DataBind()
End Sub

Public Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    Message.Text = ""
    If Not IsPostBack Then
        Yesterday = DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd")
        StartDT.Text = Yesterday                 'DateTime.Now.ToString("yyyy-MM-dd")
        EndDT.Text = DateTime.Today.ToString("yyyy-MM-dd")
    End If
End Sub

Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles GridView1.SelectedIndexChanged

End Sub

Protected Sub GetSingleUserBTN_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles GetSingleUserBTN.Click
    Call BindDataSelectedUser()
End Sub

Protected Sub GetAllUsersBTN_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles GetAllUsersBTN.Click
    Call BindDataAllUsers()
End Sub

Private Sub BindDataAllUsers()
    UserNM.Text = ""
    Message.Text = ""
    Dim StartDay As String
    Dim EndDay As String
    StartDay = StartDT.Text
    EndDay = EndDT.Text
    Dim StartMin As String
    Dim EndMin As String
    StartMin = " 00:00:00"
    EndMin = " 23:59:59"

    Dim queryString As String = "SELECT * FROM [AuditLogons].[dbo].[Logins] Where Timestamp between '" & StartDay & " " & StartMin & "' and '" & EndDay & " " & EndMin & "'"

    Dim ds As DataSet = GetData(queryString)

    GridView1.DataSource = ds
    GridView1.DataBind()
    GridView1.Visible = True

End Sub

Private Sub BindDataSelectedUser()
    Message.Text = ""
    Dim StartDay As String
    Dim EndDay As String
    StartDay = StartDT.Text
    EndDay = EndDT.Text
    Dim StartMin As String
    Dim EndMin As String
    StartMin = " 00:00:00"
    EndMin = " 23:59:59"

    If UserNM.Text = "" Then
        Message.Text = "You Must Enter a Username!"
        Exit Sub
    End If
    Dim queryString As String = "SELECT * FROM [AuditLogons].[dbo].[Logins] Where Username like '" & UserNM.Text & "' and Timestamp between '" & StartDay & " " & StartMin & "' and '" & EndDay & " " & EndMin & "'"

    Dim ds As DataSet = GetData(queryString)

    GridView1.DataSource = ds
    GridView1.DataBind()
    GridView1.Visible = True
End Sub


Function GetData(ByVal queryString As String) As DataSet

    Dim connectionString As String = ConfigurationManager.ConnectionStrings("AuditLogonsConnectionString").ConnectionString

    Dim ds As New DataSet()

    Try

        Dim connection As New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter(queryString, Connection)

        Adapter.Fill(ds)


    Catch ex As Exception

        Message.Text = "Unable to connect to the database."

    End Try

    Return ds

End Function



Protected Sub RefreshBTN_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RefreshBTN.Click
    Message.Text = ""
    Response.Redirect(HttpContext.Current.Request.Url.ToString(), True)
End Sub

Protected Sub ExportBTN_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ExportBTN.Click
    Dim strName As String
    If UserNM.Text = "" Then
        strName = "All_Users.xls"
    Else
        strName = UserNM.Text & ".xls"
    End If
    Try
        Response.Clear()
        Response.Buffer = True
        Response.AddHeader("content-disposition", "attachment; filename=" & strName)
        Response.Charset = ""
        Response.ContentType = "application/vnd.ms-excel"
        Using sw As New StringWriter()
            Dim hw As New HtmlTextWriter(sw)
            GridView1.RenderControl(hw)
            Dim style As String = "<style> .textmode { } </style>"
            Response.Write(style)
            Response.Output.Write(sw.ToString())
            Response.Flush()
            Response.End()
        End Using
    Catch ex As Exception
        Message.Text = "Error exporting to Excel : " & ex.Message
    End Try


End Sub

Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
End Sub
End Class

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Спасибо, ребята, я изменил его на DataTable, и теперь он работает как положено - очень ценится.

0 голосов
/ 11 мая 2018

Я предполагаю, что в наборе данных есть одна таблица данных, добавьте к BindDataAllUsers()

GridView1.DataMember = ds.Tables(0)

Итак, она гласит:

GridView1.DataSource = ds
GridView1.DataMember = ds.Tables(0)
GridView1.DataBind()
GridView1.Visible = True

Тем не менее, точка зрения jmcilhinney хорошо принята, используяDataTable устраняет необходимость в этой строке кода.

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