We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy.
Unfortunately, activation email could not send to your email. Please try again.

Mouse Click Crashes Grid

Thread ID:

Created:

Updated:

Platform:

Replies:

51399 Nov 3,2006 03:55 PM Dec 13,2006 02:48 PM ASP.NET Web Forms (Classic) 13
loading
Tags: GridGroupingControl
David A. Gonzales
Asked On November 3, 2006 03:55 PM

Hi,
I have a GridGrouping control that is bound to a datatable and if I click the currently selected row I get a NullReferenceException. The Stack has the following information:

Syncfusion.Grouping.CurrentRecordManager.BeginEdit() + 256
Syncfusion.Grouping.Table.BeginEdit() + 49
:
:
etc, etc.

I have the grid being bound in the Page_Init and have a PrimaryKey being setup. I am sure it's something I am forgetting.

I can run the Edit Samples without any trouble but my project is a bit different when dealing with the Database. I read 20 rows of information from a SQL database into a DataTable, build the Primary Key, bind the DataTable to the DataSource and then finally bind the data.

Thanks.
David.

Administrator [Syncfusion]
Replied On November 6, 2006 11:00 AM

Hi David,

We are Looking into this and will get back to you as soon as possible

Thanks,
B.Gokulkumar

Administrator [Syncfusion]
Replied On November 8, 2006 12:16 PM

Hi David,

My apologises for the delay in getting back to you.
We worked for a while to reproduce the issue as you told, but we couldn't reproduce the issue in any other scenario other than Page_Load event. so Could you please update us with sample which causes the issue. It will help us to come up with solutions.

Thanks for using Syncfusion products.

regards,
B.Gokulkumar

Gokul B [Syncfusion]
Replied On November 8, 2006 12:26 PM

Hi David,

My apologises for the delay in getting back to you.
We worked for a while to reproduce the issue as you told, but we couldn't reproduce the issue in any other scenario other than Page_Load event. so Could you please update us with sample which causes the issue. It will help us to come up with solutions.

Thanks for using Syncfusion products.

regards,
B.Gokulkumar

David A. Gonzales
Replied On November 9, 2006 01:19 PM

Since my sample uses a SQL Database table that is over 2.5 million records I will try and give more feed back.

In the Page_Init section I get a DataTable from the database of 20 rows of data (I manage all the paging myself). I then create a Primary Key Column:

GridTableDescriptor primKey = this.GridGroupingControl1.TableDescriptor;
primKey.PrimaryKeyColumns.Add("RowID");

Then do the following:

this.GridGroupingControl1.Datasource = dt; //dt = datatable
this.GridGroupingControl1.Databind();

Then I setup the FormEditMode = useDefaultForm. I then setup all the RowAdding, RowDeleting, etc (which do nothing at this stage of the game).

I then build some menus for the ColumnHeader right-clicks. If I double-click on a row i get the NullReference error in BeginEdit().

Here is what I recently found out. I put a button on my form that when I click it I try and edit the row. This is the code:

this.ShowCurrentRecord(); //display the current data
Record rec = this.GridGroupingControl1.Table.CurrentRecord();
rec.BeginEdit();

The rec object is Null so the BeginEdit() has a NullReference. Does this have to do with me manually binding the grid for each new page of data that I am displaying?

Thanks.
David.

Administrator [Syncfusion]
Replied On November 9, 2006 02:06 PM

Hi David,

I think you are using your own Paging logic and not the default Paging in Grid. Yes, you need to bind the grid for each new page of Data.

This is because we do not cache the Data in viewstate, to reduce the viewstate size and increase the speed. However, work is in progress for providing the DataCaching feature and there will be a provision for this, where you will have to bind the grid only once.


Thanks,
A.Sivakumar

David A. Gonzales
Replied On November 14, 2006 01:15 PM

When I click one of the buttons for my custom paging (ie, Next, Previous, Last, First) I do a postback and in each Button click event I get the next 20 records from the SQL Database (stored in dt) and then do the following:

this.GridGroupingControl1.DataSource = dt;
this.GridGroupingControl1.DataBind();

then rebuild the menu items and update the pagecount, etc. So, I think I am binding the data correctly (at least I can see the data in the grid). Do I need to do something else for binding? Even when the grid is displayed for the first time if I click a selected row it crashes with a NullReference.

This seems so simple on the surface.

Thanks for all your help.

David.

Gokul B [Syncfusion]
Replied On November 15, 2006 01:43 PM

Hi David,

My apologises for the delay in getting back to you. Here are some of my suggestions.

1) As we already mentioned, you need to bind the grid for each new page of Data.
2) Before binding to the datasource for each new page of data, please ensure this.GridGroupingControl1.DataSource is set to null as sample provided in the below forum.

http://www.syncfusion.com/support/Forums/message.aspx?MessageID=49160

please look at the below code also

this.GridGroupingControl1.DataSource=null;
this.GridGroupingControl1.DataSource = dt;
this.GridGroupingControl1.DataBind();


Let us know if this helps.

Thanks for using Syncfusion products.

regards,
B.Gokulkumar

Gokul B [Syncfusion]
Replied On November 15, 2006 02:38 PM

Hi David,

What we were mentioning in our previous post is, If you are following the approach mentioned in this forum we were discussing early, then inside the BindGrid function you have to use the below code.

We set the DataSource to null before updating with a new Datatable, there by clearing any cache made during previous binding.

function BindGrid()
{


this.GridGroupingControl1.DataSource=null;
this.GridGroupingControl1.DataSource = dt;
this.GridGroupingControl1.DataBind();
....
....

}

Let us know if you have any queries

regards,
B.Gokulkumar

David A. Gonzales
Replied On November 15, 2006 03:05 PM

Attached is my code that is having problems. I can select a row but if I try to double-click or click a selected row the system returned a NullReference in the BeginEdit() code somewhere. I am not using a ObjectDataSource but providing my own paging support. The button click events handle the getting the new data in the datatable (dt) and re-binding the data each time. FillGrid(DataTable dt) is the routine that does that. I put in a Button1_Click event that tries to get the selected row and print out some data but the Record rec object is null. I am at a lost as to why this does not work. Again the GetUserInfo2() routine gets the next 20 rows of data from the SQL Server and bind that to the grid. The paging, menus, etc all work but when I try to edit a cell (or row) it fires the NullReference error.

Thanks for all your help.
David.

test2Code.zip

Gokul B [Syncfusion]
Replied On November 16, 2006 01:05 PM

Hi David,

We are currently looking into this and will get back to you at the earliest.

regards,
B.Gokulkumar

Gokul B [Syncfusion]
Replied On November 17, 2006 01:03 PM

Hi David,

Sorry for the delay in getting back to you.

Thanks for attachment, I could see this issue in your sample as you mentioned. The Issue was viewstate is not maintained properly when we try to bind the Grid on subsequent postbacks for any operations. To overcome this issue, we made some investigation reg viewstate and found a workaround to persist the viewstate in subsequent postbacks for any opertions(Editing in this scenario).

I here with attached a sample to overcome the issue you are encountering.

ViewStateForumSample.zip


Here is the description of the sample:

* I have bind the grid using the objectdatasource with own paging logic. you can use either any .net datasource control or Datatable.
* I used session variable to maintain the RowIndex ("stRowIndex" in this sample). which is used to the bind grid accordingly.
* To perform any operation in subsequent postbacks, session state value get changed which will be used again in Init and load to avoid rebinding.

Please let us know if you connot use this workaround in your scenario for any reason. Also let us know if you need more help

regards,
B.Gokulkumar







David A. Gonzales
Replied On December 13, 2006 01:09 PM

Sorry I did not get back to you sooner. Anyway, I was able to apply your method for my problem and it's working just fine. Have the menu popups working with paging and I can edit any record I want. Thanks for all your help.

David.

Gokul B [Syncfusion]
Replied On December 13, 2006 02:48 PM

Hi David,

Thanks for your Update.

Let us know if you need any other assist.

Thanks for using Syncfusion products.

regards,
B.Gokulkumar

CONFIRMATION

This post will be permanently deleted. Are you sure you want to continue?

Sorry, An error occured while processing your request. Please try again later.

You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.

;