Error: No default member found for type MyClass

A

Andy Eshtry

Dear Friends
I have a urgent problem to solve. I have created a class and its
collection and then bind it to a datagrid but got the following error.
Please help. Thanks in advance. Andy Eshtry

No default member found for type 'clsAgentPostalCode'

Line 44: Dim oAgentPostalCodeCollection As New

clsAgentPostalCodeCollection(lAgentID)
Line 45: dgPostalCode.DataSource = oAgentPostalCodeCollection
Line 46: dgPostalCode.DataBind()

----------------------------code in aspx
file ---------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load

If Not Page.IsPostBack Then

dgPostalCode.DataKeyField = "AssignedPostalCodeID"
'dgPostalCode.DataSource = GetPostalCodeList()
Dim oAgentPostalCodeCollection As New
clsAgentPostalCodeCollection(lAgentID)
dgPostalCode.DataSource = oAgentPostalCodeCollection
dgPostalCode.DataBind()

End If
End Sub
--------------------clsAgentPostalCode -------------------------------------
------

Public Class clsAgentPostalCode
Public mAgentPostalCodeID As Long
Public mAssignedPostalCodeID As Long
Public mAgentID As Long
Public mAssignedPostalCode As String
Private mSelected As Boolean
Private mPrevSelected As Boolean

Public ReadOnly Property AgentPostalCodeID() As Long
Get
Return mAgentPostalCodeID
End Get
End Property

Public ReadOnly Property AgentID() As Long
Get
Return mAgentID
End Get
End Property

Public ReadOnly Property AssignedPostalCode() As String
Get
Return mAssignedPostalCode
End Get
End Property


Public ReadOnly Property AssignedPostalCodeID() As Long
Get
Return mAssignedPostalCodeID
End Get
End Property

Public Sub New(ByVal parAssignedPostalCodeID As Long, ByVal parSelected
As Boolean, _
ByVal parAssignedPostalCode As String, ByVal parAgentPostalCodeID As
Long, ByVal parAgentID

As Long)


mAgentPostalCodeID = parAgentPostalCodeID
mAssignedPostalCodeID = parAssignedPostalCodeID

mAgentID = parAgentID
mSelected = parSelected
mPrevSelected = parSelected
mAssignedPostalCode = parAssignedPostalCode
End Sub

Public Property Selected() As Boolean
Get
Return Selected
End Get
Set(ByVal Value As Boolean)
Selected = Value
End Set
End Property


End Sub
End Class

---------------------clsAgentPostalCodeCollection-----------------------

Imports System.Collections
Public Class clsAgentPostalCodeCollection
Inherits CollectionBase

Public Sub New(ByVal parAgentID As Long)
Dim sConStr As String
Dim oConfSetting As ConfigurationSettings
sConStr = oConfSetting.AppSettings("ConStr").ToString()
Dim Cn As SqlConnection
Dim daPostalCode As SqlDataAdapter
Dim dsPostalCode As New DataSet()
Try
Cn = New SqlConnection(sConStr)

Dim cmdSel As SqlCommand = New
SqlCommand("spAgentAssignedPostalCode", Cn)
cmdSel.CommandType = CommandType.StoredProcedure
cmdSel.Parameters.Add(New SqlParameter("@AgentID", parAgentID))
Cn.Open()
daPostalCode = New SqlDataAdapter(cmdSel)
daPostalCode.Fill(dsPostalCode, "tblPostalCode")
Cn.Close()

Dim AgentPostalCodeRow As DataRow
For Each AgentPostalCodeRow In
dsPostalCode.Tables("tblPostalCode").Rows
Dim par1 As Long =
AgentPostalCodeRow.Item("AssignedPostalCodeID")
Dim par2 As Boolean = AgentPostalCodeRow.Item("Selected")
Dim par3 As String =
AgentPostalCodeRow.Item("AssignedPostalCode")
Dim par4 As Long
If Not
IsDBNull(AgentPostalCodeRow.Item("AgentPostalCodeID")) Then
par4 = AgentPostalCodeRow.Item("AgentPostalCodeID")
Else
par4 = 0
End If
Dim par5 As Long

If Not IsDBNull(AgentPostalCodeRow.Item("ID_Agent")) Then
par5 = AgentPostalCodeRow.Item("ID_Agent")
Else
par5 = 0
End If

Dim AgentPostalCodeItem As New clsAgentPostalCode(par1,
par2, par3, par4, par5)
Add(AgentPostalCodeItem)
Next
Catch ex As Exception
Throw ex
End Try

End Sub

Public Sub Add(ByVal AgentPostalCodeItem As clsAgentPostalCode)

List.Add(AgentPostalCodeItem)
End Sub

Public Sub Remove(ByVal index As Integer)

If (index > Count - 1 Or index < 0) Then

Else
List.RemoveAt(index)

End If
End Sub

Public Function Item(ByVal Index As Integer) As clsAgentPostalCode

Return CType(List(Index), clsAgentPostalCode)
End Function

Public ReadOnly Property Length() As Long
Get
Return List.Count
End Get
End Property

Public Function Find(ByVal id As Long) As clsAgentPostalCode
Dim AgentPostalCodeItem As clsAgentPostalCode

For Each AgentPostalCodeItem In InnerList
If AgentPostalCodeItem.AgentPostalCodeID = id Then
Return AgentPostalCodeItem
End If
Next
Return Nothing
End Function

End Class
 
C

Cor

Hi Andy,

You try to make from your dataset a collection to bind that to a datagrid.
The ideal collection to bind to a datagrid as a datasource is the datatable
a part of the dataset.

What is the reason you take this very difficult route?
(While it is a webpage and therefore the collection is gone when you have
binded it, because I do not see it been saved somewhere by you).

Cor
 
A

Andy Eshtry

Thank you very much. Is there a sample code I can use to bind a user defined
collection to a
datagrid.
I used collection cause I want to assigned mulitple postal code to agents so
it is a many to many relationship and I have used "prevselected" and
"selected" properties to track which checkboxes of each postal code the user
checked or unchecked in a grid so that only add or delete a row in the
middle table (between postal code and agent tables) and do nothing for the
postal code that there were no activity on them by user.
Default Public ReadOnly Property Item(ByVal Index As Integer) As
clsAgentPostalCode

Get

Return CType(List(Index), clsAgentPostalCode)

End Get

End Property

Would you please what is wrong to my databinding code?

If Not Page.IsPostBack Then

dgPostalCode.DataKeyField = "AssignedPostalCodeID"

Dim oAgentPostalCodeCollection As New clsAgentPostalCodeCollection(lAgentID)

dgPostalCode.DataSource = oAgentPostalCodeCollection

dgPostalCode.DataBind()

End If
 
C

Cor

Hi Andy,

I would start with trying
dgPostalCode.DataSource =dsPostalCode.tables("tblPostalCode)

Give it a try?

Cor
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top