views:

115

answers:

2

I've been using jqGrid ASP .Net and really happy with it but I required a permanent blank new row at the top of the grid which allows a user to enter a new row on the fly rather than using the add row dialog.

From looking at the trirand forums, this is currently not supported 'out of the box'.

I have seen this forum post http://www.trirand.net/forum/default.aspx?g=posts&t=212 but it doesn't work (alert is shown but nothing else happens) and also requires the user to click the New button rather than the new row always being at the top of the grid.

Any help would be greatly appreciated, Cheers

Additional Information: I am wanting a permanent blank row at the top of the grid where the user enters every new row, below this row would be the data already entered (loaded from the database on page load). As the new row is added (when the user hits enter) the row is displayed in the grid (which I gather would also fire the OnRowAdding event for me to insert into the sql server) and the permanent new row would clear its values ready for new entry. I am also using inline editing (which is working fine) and committing the changes to a sql server database. I am populating the grid on load of the page by setting the datasource to a datatable and calling DataBind()

A: 

Look at this example which I created for the answer. The example works with local inline editing and fill the grid with empty data at the beginning. You can modify it and fill only in the first line empty data and all other rows fill with "real" data.

Another way: you can just place "New" button above the rows (see http://stackoverflow.com/questions/3552855/add-toolbar-in-the-bottom-of-the-header-using-jqgrid/3557663#3557663 which describes how to do this) on the second navigation bar. So users will see it immediately. You can also place custom button instead of a standard "New" button. This custom button (for example "+") could just insert a new row and goes in the inline editing mode.

If all this is not what you want, you should include in your question more detailed information which kind of editing you use (inline, cell or form), where you hold the data (local, only on the server or use loadones:true to have a mix data holding).

Oleg
Oleg, the first example you provided is close to what I am after. I have included some more information in my post so you have a better idea of what I am trying to achieve. I am going to have a play around with the source you've provided and see how I go. If you happen to have any tips or have done something similar then would more than welcome any assistance :)
Maton
A: 

Ended up solving this problem by inserting a new row to the datatable when I populate the grid as follows:

        DataRow dr = dtTimesheets.NewRow();
        dtTimesheets.Rows.InsertAt(dr, 0);
        grdTimesheet.DataSource = dtTimesheets;
        grdTimesheet.DataBind();

Then on the RowEditing method I check if it is the in fact the new row and perform my insert instead of an edit and then reload the grid which puts a new empty row at the top of the grid again.

Maton