These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Composite-ID and DatagridView
PostPosted: Tue May 27, 2008 11:27 am 
Newbie

Joined: Tue May 27, 2008 10:37 am
Posts: 1
Hi I have a problem with the datagridview together with a nhibernate composite-id. I am wondering if you experts out there can help me with this.

As in my code under Button2_Click procedure, i want to display the pOR_NO. This is achieve by doing a directcast to DOrderDetails and then access it member pOrderDetails_ID for the pOR_NO. When i try to do this VB.net actually return me an exception saying that the "Object reference not set to an instance of an object."

When i try to access on the pDESC attribute the system can display the value but not for pOR_NO.

Hibernate Version: NHibernate 1.2

Mapping documents & Codes

Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Console.WriteLine(DateTime.Now)
        cfg = New Configuration()

        cfg.AddAssembly("classes")

        factory = cfg.BuildSessionFactory()

        session = factory.OpenSession()

        bindSrc = New BindingSource

        DataGridView1.AutoGenerateColumns = False
        bindSrc.Add(New DOrderDetails())
        DataGridView1.DataSource = bindSrc
        Dim column As DataGridViewColumn

        column = New DataGridViewCheckBoxColumn()
        column.Name = "DEL"
        DataGridView1.Columns.Add(column)

        column = New DataGridViewTextBoxColumn()
        column.DataPropertyName = "pOR_NO"
        column.Name = "Order No"
        DataGridView1.Columns.Add(column)

        column = New DataGridViewTextBoxColumn()
        column.DataPropertyName = "pDESC"
        column.Name = "Description"
        DataGridView1.Columns.Add(column)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim x As DOrderDetails= DirectCast(bindSrc.Item(DataGridView1.SelectedCells(0).RowIndex), DOrderDetails)

        Console.WriteLine(x.pOrderDetails_ID.pOR_LINE)   '<------------------Error here
    End Sub

Code:
Imports System

Namespace Dialogue
    Public Class DOrderDetails
        Dim _OrderDetails_ID As DOrderDetails_ID
        Dim _DESC As String
        Dim _PRICE As Decimal
        Dim _QTY As Integer

        Public Sub New()
            _OrderDetails_ID = New DOrderDetails_ID
        End Sub

        Public Overridable Property pOrderDetails_ID() As DOrderDetails_ID
            Get
                Return _OrderDetails_ID
            End Get
            Set(ByVal value As DOrderDetails_ID)
                _OrderDetails_ID = value
            End Set
        End Property
        Public Overridable Property pDESC() As String
            Get
                Return _DESC
            End Get
            Set(ByVal value As String)
                _DESC = value
            End Set
        End Property
        Public Overridable Property pPRICE() As Decimal
            Get
                Return _PRICE
            End Get
            Set(ByVal value As Decimal)
                _PRICE = value
            End Set
        End Property
        Public Overridable Property pQTY() As Integer
            Get
                Return _QTY
            End Get
            Set(ByVal value As Integer)
                _QTY = value
            End Set
        End Property
    End Class

    Public Class DOrderDetails_ID
        Dim _OR_NO As String
        Dim _OR_LINE As Integer

        Public Overridable Property pOR_NO() As String
            Get
                Return _OR_NO
            End Get
            Set(ByVal value As String)
                _OR_NO = value
            End Set
        End Property
        Public Overridable Property pOR_LINE() As Integer
            Get
                Return _OR_LINE
            End Get
            Set(ByVal value As Integer)
                _OR_LINE = value
            End Set
        End Property

        Public Overloads Overrides Function Equals(ByVal Obj As Object) As Boolean
            Dim x As DOrderDetails_ID = DirectCast(Obj, DOrderDetails_ID)

            Return Me.pOR_LINE = x.pOR_LINE And Me.pOR_NO = x.pOR_NO
        End Function

        Public Overloads Overrides Function GetHashCode() As Integer

            Return New Random().Next()

        End Function
    End Class
End Namespace



Mapping file


Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
   <class name="Dialogue.DOrderDetails, classes" table="orderdetails">
      <composite-id name="pOrderDetails_ID" class="Dialogue.DOrderDetails_ID, classes">
         <key-property name="pOR_NO" column="OR_NO" type="String"/>
         <key-property name="pOR_LINE" column="OR_LINE" type="Int32"/>
      </composite-id>
      <property name="pDESC" column="DESC" type="String"/>
      <property name="pPRICE" column="PRICE" type="Decimal"/>
      <property name="pQTY" column="QTY" type="Int32"/>
   </class>
</hibernate-mapping>


Stacktrace:
at HiberNetTest.Form1.Button2_Click(Object sender, EventArgs e) in C:\Documents and Settings\bitMessen\My Documents\Visual Studio 2005\Projects\HiberNetTest\HiberNetTest\Form1.vb:line 225
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.