Forms Data Controls :: Automatically Set Page Index On DetailsView After Insert
Aug 13, 2010
I wonder if there is a clevcer way of setting the correct page of a DetailsView after inserting new data? I have a DetailsView bound to a LinqDataSoure. Now, if I use this DetailsView to insert new data, everything works fine, except the fact that the DetailsView switches back to the "old" page index after leaving InsertMode.
This is somehow understandable, because it can't know which index the new entry will have, but unfortunately neither do I. So I was looking to the LinqDataSource_Inserted event where I can get the new Entry, but because the DetailsView.SelectedValue is read only, I can't just set it to the new entry. So. I might have to use the PageIndex property, but then I would need to know the index of the new Item, which I don't have either.
So, my only idea know is to store some information from the new entry, wait until everythings bound again, loop through the DetailsView to find my new entry an set it's index for PageIndex. But also here I have two problems:
1) The new entry (e.Result from LinqDataSource_Inserted) has not yet filled it's primary key, as this is of course created in the DB, so it's very difficult to identify the new entry properly
2) I don't know how to access each DetailsView page information without actually making it the active page.
So, my question, is there a clever way of doing this? In the past, I've been using SqlDataSource. Although the problem is basically the same, I could solve the two major problems by 1) Insert with Stored procedure which gives the new primary key back and 2) run through
I have an issue that I've spent quite a bit of time trying to solve. I have a Detailsview and a Gridview that I have linked using the ID field, It has now been decided that they want to have individual pages for each Unit. I have this working for the most part, however the detailsview is not being displayed until I hit select the row in the gridview.
How do I get this to automatically display on page load?
In my detailsview, I have an emptydatatemplate set up to allow users to enter new records. The code works. However, once the record is inserted, the detailsview defaults to a standard insert screen. I know this will cause confusion for the users. I would prefer the detailsview to either show in edit mode or a read-only mode. I have used detailsview.changemode and detailsview.currentmode in the custom sub created for the add new button of the emptydatatemplate- neither of which do what I was hoping. It would be even better if when there was no data, it defaulted to the insert screen (which seems like that should be an easy, no-brainer way for .net to function) but it doesn't. Or, I don't know how to accomplish it.
I don't want to force the user to click cancel after inserting an item through the emptydatatemplate just to be able to use the detailsview for other records.
I have a problem with DetailsView linked with Database, DetailsView is Insert/Edit enabled, and adding/ediditng data works, however........ when I add a new record (DetailsView in Insert mode) and press INSET instead going to record I have just created in Read-Only Mode it shows me blank form, it looks that the "linking" field is null.
I am trying to arrange the information from a SQL record into a 3 column by 3 row table to fit the form presentation that I want. I have placed on the page 3X3 table and then tried to place a detailsview in the first cell for the first picture called P1dv.
I have place a detailsview in the last cell that would control the paging of information called Controldv. I need to fiqure out how to link P1dv paging to Controldv page action. I am using visual web dev. 2005. I am not updating or editing these are read only views.
example of what i need the form output to look like:
I have a stored procedure and a function. I am connecting my FormView to the function and I am trying to insert a new record. I am not sure if the problem is the stored procedure, the fucntion or the FormView.
Is it possible to code DetailsView to go to the new record I've just insertted? Currently it appears to default to the first record, utlimatly I'd like it sorted Last name, first name and upon an Insert it should go to that new record on pageload.
I am using DetailsView to INSERT new records. I have a field "Paid Date"(date) that needs to be pre-populated with the current date. 90% of the time, the user will use the default date, however, there are times when the user will need to change the data as needed. I want to add this default in the code-behind. I DO NOT want to use template item.
I figure that this should be relatively straightforward, but I still can't get it to work. I have a gridview and a detailsview to set up shifts for students and teachers. I would like to be able to insert new shifts using a detailsview. I will limit the students, teachers and location to items that are in a dropdownlist. The problem is that when I handle the iteminserting event. the e.values collection doesn't contain all of the fields I want to populate. How do I add the new fields to the list. This is my codebehind:
Sub On_Inserting(ByVal sender As Object, ByVal e As DetailsViewInsertEventArgs)
I have a dropdownlist in the edititemtemplate of a detailsview. The dropdownlist is bound with an objectdatasource. The detailsview is bound to a seperate objectdatasource which connects it to the insert method. When the page loads the dropdownlist is bound properly. However, when I make a selection and select insert I get the following error: Could not find a property named 'DeptID' on the type specified by the DataObjectTypeName property in ObjectDataSource 'objCurrentProduct'. I've tried to remove the SelectedValue='<%# Bind("DeptID") %> attribute. I can then insert without an exception being thrown but the selected value of the dropdown is not recognized. Here is the code:
Scenario : I have two database tables with one to many relationship. eg:- City and Related news. So I have a gridview(Gridview1) which lists out all the cities and allows edit, delete of the gridview rows. Now since i wanted to display all news for the city, i have a nested gridview as a column in this Gridview1. This nested gridview displays all the news for the cities. And I have edit, delete buttons for this gridview too - So far, good - works fine.
Now what I would like to do is - To insert a new news item for a city. For this, I attached a detailsview to my nested grid(gridview2), and tried to insert. I need the primary key id of city table from the first grid (gridview1) to insert the news into the second database table and I could not access this value from the parent gridview. My gridview1 does not have datakeyname, it is programatically bound.
Also, When the gridview/detailsview is nested, it does not get listed in the event-handler list. So I cannot use say, detailsview1_iteminserting. I do not how to add this event handler
Has anybody done anything similar? When I started, it looked like a pretty straightforward thing - There must be some way to do this. But I just can't get it to work. How do you usually insert into the child table in a one-to-many relationship? Should i just be using two separate gridviews?
I'm inserting data into a SQL database through a detailsview. When a user inserts an incorrect data type or leaves a required field blank it shoots off to a big error screen. Is there a control that I can use that will allow it to give an error (with a little star or something) that says which field is incorrect without the big error screen?
'' I try to add an TemplateField to my DetailsView control with calander control, in all modes. but can only add it to cell(0).how can i insert in the middle of the row?
Dim tmpfld As New TemplateField Dim c As Calendar = New Calendar() DetailsView1.Rows(0).Cells(4).Controls.Add(c)
How do I set the value of a field in a detailsview to the selectedvalue of a gridview on the same page? I am also trying to set today date as value of another field in the detailsview as well as UserID. I wrote the following codebehind for the date setting:
TextBox tb = (TextBox)DetailsView2.FindControl("TextBoxCreDate"); tb.Text=System.DateTime.Now.ToShortDateString(); TextBoxCreDate is a template field in my DetailsView.
Unfortunately, I get a Object reference not set to an instance of an object. Error message.
I'm looking to find some command or control that will change fields in a detailsview insert a 0 if there was no data inserted into them. Some example code from my boundfield is:
My web form contains a detailsview control that I have added a templated field to with a DropDownList in the InsertItemTemplate. The DetailsView default mode is 'insert. My detailsview is attached to a sqldatasource that has a stored procedure in the db to handle the insert. When I enter data in the fields and select insert all values from the detailsview are written to the table except for the selection that was made in the dropdownlist. I am using the ddl.selecteditem.value to populate my variable however when the insert method is envoked it doesn't send my value. The DDL value that I am capturing does not need to be written to the table it is just a flag for some variables that need to be set at the stored proc level. How do I get the DDL selected value to be sent with the insert statement?
Here is my code behind:
Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Dim temp As DropDownList Dim AccessLevel As String temp = AddUserDetailsView.FindControl("DropDownList1")End Sub AccessLevel = temp.SelectedItem.Value Label1.Text = AccessLevel
I guess I'm not sure exactly how or where to do what I need.
First off - here's what I need - - when the user clicks on the NEW button in the detailsView, I have the User.Identity.name captured in a variable and I need to set one of the textboxes (InsertItemTemplate) named 'txtNew' to that name.
I've tried using the ModeChanging (and ModeChanged) event: Dim dv As TextBox = CType(DetailsView1.FindControl("txtNew"), TextBox) If (e.NewMode = DetailsViewMode.Insert) Then ....
However, no matter what, 'dv' always shows as 'Nothing', so I can't change the text of it.
GirdView and DetailsView in defautl.aspx. When i insert a new record using detailsview it works and gridview is updated. But i want jump to the right page in gridview after importing the record. How can i highlight the new row imported record in Girdview. I use ajax so gridview and detailsview are in updatepanel.
This would seem to be quite a trivial task, however I am having trouble retrieving the identity of the record inserted using the detailsview.insert() in the code behind. It would seem that detailsview.DataKey.Value would contain this value, but it is null after the insert is performed.
A TemplateField of a DetailsView can be assigned a value easily at any of many event handlers such as Load, PreRender, etc. when the page is loaded. However, after Insert or Cancel is clicked, all the fields are cleared. I cannot figure out how to assign a value to the field again in code-behind.
DetailsView has 2 properties: AutoGenerateEditButton, AutoGenerateInsertButton for hadling Update and Insert. Is there any way I can use asp:Button or some other buttons to hadle the same tasks?