Hi All,
I have wrote a control which just outputs some javascript to an ASP:Literal control. But its throwing up an error, the control compiled ok but when the ASP.NET page runs I get this error on Line 10:
Exception Details: System.ArgumentNullException: Value cannot be null. Parameter name: dataSet
Source Error:
Line 8: objNavigation.Groups = "2,3"
Line 9: objNavigation.Target = "content"
Line 10: litJavaScript.Text = objNavigation.WriteNavigation()
Line 11:
Line 12: End Sub
Now the code I used in the control worked fine when out on a normal asp.net page, but as soon as it was placed in a class it started playing up. Any Ideas?? Here is the code for the class.
Thanks ppl...
Imports System
Imports System.Xml
Imports System.Data
Imports System.Data.SqlClient
Namespace Cienet
Public Class Navigation
Public Sub New()
End Sub
' Declare property variables
Private _strGroups as String
Private _strTarget as String
' Declare class variables
Private _intCounter as Integer
'Private _sbJavaScript As New StringBuilder()
Public WriteOnly Property Groups as String
Set (ByVal strGroups as String)
_strGroups = strGroups
End Set
End Property
Public WriteOnly Property Target as String
Set (ByVal strTarget as String)
_strTarget = strTarget
End Set
End Property
Public Function WriteNavigation()
Dim objSqlConnection as New SqlConnection("server='******'; user id='******'; password='********'; database='*****'")
Dim objNavDataSet as DataSet
' Create DataAdapter for Navigation Groups
Dim objNavGroupsSqlCommand as New SqlCommand("spNavGroups", objSqlConnection)
objNavGroupsSqlCommand.CommandType = CommandType.StoredProcedure
objNavGroupsSqlCommand.Parameters.Add("@strNavGroups", SqlDbType.VarChar, 255).Value = _strGroups
Dim objNavGroupsDataAdapter as New SqlDataAdapter(objNavGroupsSqlCommand)
objSqlConnection.Open()
objNavGroupsDataAdapter.Fill(objNavDataSet, "tblNavGroups")
' Loop through group rows to generate where SQL for items
Dim objNavGroupsDataRow as DataRow
Dim strNavItemsSqlWhere as String
Dim intCounter as Integer = 0
For Each objNavGroupsDataRow in objNavDataSet.Tables("tblNavGroups").Rows
If intCounter <> 0 Then strNavItemsSqlWhere = strNavItemsSqlWhere & ","
strNavItemsSqlWhere = strNavItemsSqlWhere & objNavGroupsDataRow.Item("strItems").ToString()
intCounter = intCounter + 1
Next
' Create DataAdapter for Navigation Items
Dim objNavItemsSqlCommand as New SqlCommand("spNavItems", objSqlConnection)
objNavItemsSqlCommand.CommandType = CommandType.StoredProcedure
objNavItemsSqlCommand.Parameters.Add("@strNavItems", SqlDbType.VarChar, 255).Value = strNavItemsSqlWhere
Dim objNavItemsDataAdapter as New SqlDataAdapter(objNavItemsSqlCommand)
objNavItemsDataAdapter.Fill(objNavDataSet, "tblNavItems")
' Close DB Conn
objSqlConnection.Close()
' Start generating JavaScript for menu
Dim objNavItemsDataRow as DataRow
Dim strJavaScript as String
intCounter = 0
' Loop through each NavGroup
For Each objNavGroupsDataRow in objNavDataSet.Tables("tblNavGroups").Rows
strJavaScript = strJavaScript & "Link[" & intCounter & "] = ""0|" & objNavGroupsDataRow.Item("strGroupName").ToString() & "||"";"
intCounter = intCounter + 1
' Create DataView to query what NavItems are needed
Dim objNavItemsDataView as DataView = objNavDataSet.Tables("tblNavItems").DefaultView
objNavItemsDataView.RowFilter = "idNavItem IN (" & objNavGroupsDataRow.Item("strItems").ToString() & ")"
Dim objNavItemsDataRowView As DataRowView
' Loop through NavItems
For Each objNavItemsDataRowView In objNavItemsDataView
strJavaScript = strJavaScript & "Link[" & intCounter & "] = ""1|" & objNavItemsDataRowView.Item("strItemName").ToString() & "|" & objNavItemsDataRowView.Item("strLink").ToString() & "|" & objNavItemsDataRowView.Item("strTarget").ToString() & """;"
intCounter = intCounter + 1
Next
Next
Return strJavaScript
End Function
End Class
End Namespace