Web Forms :: Detailsview Insert Not Reflected In Dynamic Report?
Feb 1, 2011
I have a panel with a detailsview that i use to create rows for table MMS_Projects.
I have another Panel in which i create a report of contents of this table along with dedicated controls for each (buttons to add elements to child tables like goals and tasks)
when i complete an insert into the projects table, the page re-posts and the dynamic projects report re-initializes (i added a timestamp at the top of the report to confirm that the page re-initializes). but the new row is not immdiately present.
if another control is clicked (causing another re-post), the new row shows up.
since i know the insert was successfull and that the dynamic report has been "re-init"-ed, i assumed there is a delay (one thread is still performing an insert while another is creating a report), so i forced a system.threading.thread.sleep(3000) in the creation of the report.
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.
Getting the message that ObjectDataSource ... count not find a non-generic method ... that has parameters ... The parameter list is fine until I get to the very end and it list the two data fields that are in my DetailsView. Using the ASP Tutorial #17 (Examining the Events Associated with Inserting, Updating, and Deleting) and the Exploring the Data Modification - specifically the one showing the INSERT of the Product Name and UnitPrice. ASPX page is pretty simple and attempting something similar, two fields to insert a new record - update the other fields later.
Full Error Message follows along with ASPX and the AsignaturasBLL.cs. Interesting thing is that when I swap the two fields in the DetailView, then the last two fields in the error message are swapped. In the error message I bolded these two fields.
I am using 1 textbox with a Ajax Calendar extender to allow my user's to select a date graphically (exp: 12/15/2009). I have another textbox for the hour and minutes in military time(exp: 15:30). I think i have the code to grab the data from the 2 textbox's and combine them to be inserted into the field (exp: 12/15/2009 15:30). Here is my insert code for the Field:
[Code]....
However unless I make all the fields Nullable the insert fails, on top of that none of the other field that I have selected on the Detailsview Insert or Edit are inserted into there fields. Half of my fields have to be non-null values. So how do I fix this?
I can supply additional vb code and the aspx code if needed.
This is the error I'm getting: Cannot insert the value NULL into column 'Operation_type', table '/GAOSDB.MDF.dbo.BC_Perf_Log'; column does not allow nulls. INSERT fails. The statement has been terminated.'
This is the first non-null column.
I need to get this figured out because I have 30 other web pages that will be utilizing the same approach.
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.
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 listbox that I am populating at runtime with javascript. After the listbox is populated I am using a button to get that value. on button click when I am trying to get the value it is the listbox item count is 0, Can anyone tell what's wrong after t he javascript populates the code,I have written the code in button click :
for (int i = 0; listbox1.Items.Count - 1; i++) { string s = listbox1.Items[i].ToString(); }
the value of count is showing as 0, though it has the values populated. What I am missing ?
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.
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
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?