2013-09-07 2 views
0

좋은 하루 모든 내가 연결 문자열에 문제가 나는 (VB.NET) 외부의 gridview 서브 루틴의 RowDataBound에이 예외를ConnectionString을 초기화하지

The ConnectionString property has not been initialized. 

납니다

내측의 gridview

데이터를 결합하려고 할 때 코드 :

Private Function ChildDataSource(ByVal strCustometId As String, ByVal strSort As String) As SqlDataSource 
    Dim strQRY As String = "" 

    Dim connString As String = ConfigurationManager.ConnectionStrings("SiteConnectionString").ConnectionString 

    Using conn As New SqlConnection(connString) 
     conn.Open() 

     strQRY = "SELECT [Sortie].[OdvID],[Sortie].[SortieID]," & "[Sortie].[Fuel],[Sortie].[Captain],[Sortie].[Crew] FROM [Sortie]" & " WHERE [Sortie].[OdvID] = '" & strCustometId & "'" & "UNION ALL " & "SELECT '" & strCustometId & "','','','','' FROM [Sortie] WHERE [Sortie].[OdvID] = '" & strCustometId & "'" & "HAVING COUNT(*)=0 " & strSort 

     'Initialize command object 
     Dim cmd As New SqlCommand(strQRY, conn) 
     Dim dsTemp As New SqlDataSource() 
     dsTemp.SelectCommand = strQRY 
     Return dsTemp 
    End Using 

End Function 

이 이벤트는

Protected Sub gvOdv_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs) 

    Dim connString As String = ConfigurationManager.ConnectionStrings("MoyensAeriensConnectionString").ConnectionString 

    Dim conn As New SqlConnection(connString) 
    conn.Open() 


    Dim row As GridViewRow = e.Row 
    Dim strSort As String = String.Empty 

    ' Make sure we aren't in header/footer rows 
    If row.DataItem Is Nothing Then 
     Return 
    End If 

    'Find Child GridView control 
    Dim gv As New GridView() 
    gv = DirectCast(row.FindControl("gvSorties"), GridView) 

    'Check if any additional conditions (Paging, Sorting, Editing, etc) to be applied on child GridView 
    If gv.UniqueID = gvUniqueID Then 
     gv.PageIndex = gvNewPageIndex 
     gv.EditIndex = gvEditIndex 
     'Check if Sorting used 
     If gvSortExpr <> String.Empty Then 
      GetSortDirection() 
      strSort = " ORDER BY " & String.Format("{0} {1}", gvSortExpr, gvSortDir) 
     End If 

     'Expand the Child grid 
     ClientScript.RegisterStartupScript([GetType](), "Expand", "<SCRIPT LANGUAGE='javascript'>expandcollapse('div" & DirectCast(e.Row.DataItem, DataRowView)("OdvID").ToString() & "','one');</script>") 
    End If 

    'Prepare the query for Child GridView by passing the Odv ID of the parent row 

    gv.DataSource = ChildDataSource(DirectCast(e.Row.DataItem, DataRowView)("OdvID").ToString(), strSort) 

    gv.DataBind() 

    'Add delete confirmation message for Customer 
    Dim l As LinkButton = DirectCast(e.Row.FindControl("linkDeleteCust"), LinkButton) 
    l.Attributes.Add("onclick", "javascript:return " & "confirm('Are you sure you want to delete this Customer " & DataBinder.Eval(e.Row.DataItem, "OdvID") & "')") 

End Sub 

감사 (I'v 마지막 3 시간 동안이 오류를 사냥하고) 각 행

+1

로드 된 후'connString'의 값은 무엇입니까? – LarsTech

답변

0

모두 코드 조각은 별도의 연결 문자열을 사용하는 것 같습니다 발생합니다. ChildDataSource"SiteConnectionString"을 사용하고 gvOdv_RowDataBound을 사용하면 "MoyensAeriensConnectionString"을 사용합니다. 여기에 분명히 나와 있지는 않겠지 만, 그렇다면 설정 파일에있는 두 가지 모두입니까?

+0

덕분에 내 오타가 모두 같은 것을 사용하고 있습니다 – NetTiger

0

첫 번째 코드 단편에 SqlDataSource을 동적으로 생성 한 경우 해당 ConnectionString 속성을 설정하지 않았으므로이 오류가 발생합니다.

또한 SqlDataSource에 ID를 할당하지 않았습니다. 그것도 이것을하는 것이 좋습니다. ConnectionString 속성도 SqlDataSource으로 설정해야합니다.

Dim dsTemp As New SqlDataSource() 
dsTemp.ID = "mySqlSourceControl" 
dsTemp.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionStr").ConnectionString 
dsTemp.SelectCommand = strQRY 
... 

것들이 나머지도 같은 미세 같아야의 Web.config 언급 키에 대한 접속 스트링을 갖는다 [예를 들면 ConnectionStr 여기]

+0

많은 도움을 주신 분 적절한 선언을 사용하여 문제를 해결했습니다. – NetTiger

+0

문제가 해결되면 다행입니다. 가장 도움이 된 답변을 수락하는 것을 고려하십시오. –

0

SQLDataSource를 gridview의 데이터 소스로 반환하는 대신 데이터 세트를 반환하는 것이 좋습니다.

Private Function ChildDataSource(ByVal strCustometId As String, ByVal strSort As String) As DataSet 
    Dim strQRY As String = "SELECT [Sortie].[OdvID],[Sortie].[SortieID]," & "[Sortie].[Fuel],[Sortie].[Captain],[Sortie].[Crew] FROM [Sortie]" & " WHERE [Sortie].[OdvID] = '" & strCustometId & "'" & "UNION ALL " & "SELECT '" & strCustometId & "','','','','' FROM [Sortie] WHERE [Sortie].[OdvID] = '" & strCustometId & "'" & "HAVING COUNT(*)=0 " & strSort 

    Dim connString As String = ConfigurationManager.ConnectionStrings("SiteConnectionString").ConnectionString 

    Using conn As New SqlConnection(connString) 
     conn.Open() 
     Using da As New SqlDataAdapter(strQRY, conn) 
      Using ds As New DataSet 
       If da.Fill(ds) > 0 Then 
        Return ds 
       Else 
        Return New DataSet 
       End If 
      End Using 
     End Using 
    End Using 

End Function 

자식 그리드 뷰의 데이터 소스를 설정하는 방법은 동일하게 유지됩니다.

+0

고맙습니다. angusf 시도해 보겠습니다. – NetTiger

+0

@NetTiger 어떻게 했습니까? – angusf

관련 문제