Forms Data Controls :: DropDownList Bind Error - Force Order Of FormView And Child Controls Load?
May 4, 2010
I have a FormView with an EditTemplate.And the EditTemplate contains an ascx control:
The contents of the ascx control has TextBox and DropDownList controls binding to the results of the FormView's ObjectDataSource through Text='<%# Eval("field1") %>'and SelectedValue='<%# Eval("field2") %>'.This works fine and I have been building all of my front end pieces like this as <asp:Panels> rendering as FieldSets that go 100% across the screen.And we call these areas "strips" accross the screen.But now I've run into a problem.One TextBox and one DropDown bind fine to a Ticket Object.But the DropDownList that works has its <asp:ListItems> hardcoded before hand.Now I have DropDownList that gets populated through a WebService in the ascx's
code behind like this:
public partial class UserControls_FormControls_PntipUpdtFaaInfo :
protected void Page_Load(object sender, EventArgs e)
The Problem I think is the FormView is trying to do its Bind to the objectDataSource before its child ascx control is loaded in the Edit Template.And I am getting this error:
Databinding methods such as Eval(),XPath(),and Bind() can only be used in the context of a databound control.Meaning that the control must already be databound to bind the selectedValue to a Property of the TicketObject.Is there an easy way to force the order of loading to make the PntipUpdtFaaInfo control load and have its Page_Load execute and bind ddlEquip before the FormView does its first dataBind and executing its Evals?Otherwise I have to take out the eval on the ddlEquip SelectedValue attribute and go to the Parent Page and hack and force everything to happen when it needs to.This layout has worked out well for me.All of the ascx area strips across the screen share the same Validation Summary for example.It allows me to think about one section at a time and the Properties to the Business Obect and CRUD methods as I go.But this is a big brick wall I've hit.
I have no problem when paging my FormView, the dropdownlist does not read the next record and keep the value of the first loaded record? All other textbox control behave normally and move from record to record excepted the ddl??Here the code.
Public Sub DoData() Dim myConn As SqlConnection = New SqlConnection(ConfigurationManager.ConnectionStrings("LocalSqlServer").ConnectionString) Dim myCommand As SqlCommand = New SqlCommand("SelectSupplier", myConn) myCommand.CommandText = "SelectSupplier"
to force a table width in Formview control templates? I have created a table in the ItemTemplate that works fine but I can't seem to get the table to fill the entire width of the display area. I tried wrapping the entire FormView in a div tag and setting the width to 98% but it didn't work either. Aplogies in advance if this has already been asked. I found a lot of references to GirdView (which didn't help) and nothing helpful r/e FormView except the div tag suggestion.
Here is the code I am using for the ItemTemplate (VS 2008, VB [preferred], in a master page):
I need to programmatically fill DropDownList in FormView and can't find the proper event to do it. I keep getting "'GenreList' has a SelectedValue which is invalid because it does not exist in the list of items" or "Bind, Eval can only be used in databound control" depending on the event. Sample code follows (there's no attempts to bind a DropDownList there ):
I've got a FormView control for which I'm Viewing, Inserting and Updating to a MS SQL Database.
Instead of adding a SqlDataSource control to the page, I've created it in the code behind and declaring the properties/attributes for it during Page_Load.
At the moment, everything is bound and working fine, but I'm having an issue Databinding to the child controls in my FormView with parameters set in the code behind.
This is where I'm at.
So, I need to be able to bind the DS.InsertParameters.Add("PageTitle", ---) with the txPageTitle control in the Insert Template, same with the PageURL to txPageURL. Is there any easy way to do this from the code behind? I can't seem to find a way to add a parameter without needing to assign it a value.
since APS.Net 4.0 I have a curious problem with an event.
There is a FormView and inside of the EditItem there is a GridView. In the Footer of the GridView I put Controls for inserting records.
But when I fire a markup defined RowCommand of that GridView then the same event is getting fired for the Parent FormView. First I had 'Insert' as the CommandName and so I was getting the Error that my FormView had to be in insert mode to insert a record. Then I changed the RowCommand of the GridView to 'xxx' and I got also the RowCommand 'xxx' at the RowCommand eventhandler of the Parent FormView.
The project was migrated from .Net 3.5 a few days ago, but nothing was manually changed in the code/markup. And the problem was not there with the "old" framework.
Of course, I could simply change the CommanName of the LinkButton e.g. to 'InsertChild' but I would like to know:
I have a formview in which I have a dropdown list that displays a list of owners. In case the list does not have the correct owner for the user I have added functionality for them to add a new owner to the database table that populates the list. I did this by including a textbox and an Insert button in a panel. When the user clicks the new owner insert button I would like to re-databind the dropdown list so that they will see the owner they added and be able to select it.
When I add ddl_owners.databind to my button click code it gives me an error. "Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control."
I don't want to re-databind the entire formview because then it deletes all the information on the form that the user has already keyed in.
I have a Formview residing inside am Item Template of a Gridview. The formview is not populating, and I am pretty convinced that I am not passing the parameter properly from the Gridview to the Formview. I have listed the relevant code only, so that you can scan though it easierGridview tag:
Consider I have 2 controls, C and CompositeC which contains C. Both C and CompositeC have ViewState.
Now consider a third control causes a postback.
The resulting life cycle will be as follow:
CompositeC tries to restore state. To do so it needs to create the child controls, so it creates C. When C is created it's ViewState is restored.The third control's postback event is triggered. At this time a handler calls CompositeC.RecreatedChildControls() and C is created again.Everything renders.
The problem is that C state is not restored again after step 3. RecreateChildControls method should modify the control's state so that when C is reintroduced to the CompositeC control's collection it's viewstate is automatically restored but it doesn't.
There is a page having formview with inserttemplate loading after user authentication. I have created user id = guest. If anyone login with guest i want to be load page FormView with EmptyDataTemplate.
I a formview object. I have created an edit temple and an empty template Whehn there is data in the table nor probem When my table is empty i got the empty template to display when I click insert I get the error " Form must be in insert mode" How can I tell if there is no data on the page load so I can maybe do this:
Hi, i am newbie to asp.net. In my page there is a formview with sqldatasource. In which there is a dropdownlist wrapped with an updatepanel. What i'm trying to do is the re-bind ddlStudents after adding new row to the students table (using gridview and ajax popup extender-both working fine, i'm being able to add new )
<asp:UpdatePanel ID="ddlUpdatePanel" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:DropDownList ID="ddlStudents" runat="server" DataSourceID="sdsStudents" DataValueField="studentID" DataTextField="name" SelectedValue='<%# Bind("studentID") %>' > asp:DropDownList> </ContentTemplate> </asp:UpdatePanel> <asp:SqlDataSource ID="sdsStudents" runat="server" ConnectionString="<%$ ConnectionStrings:myConnectionString %>" SelectCommand="SELECT studentID, name FROM tblStudents"> </asp:SqlDataSource> after closing the popup, Protected Sub btnClose_Click(ByVal sender As Object, ByVal e As EventArgs) If IsPostBack Then ddlUpdatePanel.Update() ddlStudents.DataSourceID = "sdsStudents" ddlStudent.DataBind() modalPopupPanel.Hide() End If End Sub
I am getting error;
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
One of the fields on my formview is a dropdownlist. When I go into edit mode the dropdownlist gets set to the correct value and works fine up to this point. Problem is I just can't see how to get the newly selected value of the dropdownlist to persist to the database when update is clicked. The DDL is a category list and I want to allow changing of the category for each record. Like I said I have it working so it displays the correct category for the record but if I change the DDL (change category) the new selected value doesn't get updated in the database. It just keeps using the binded value that was originally assigned to the selected value of the DDL. see code snippit
The above snippet is how I am binding the DDL. Now to not bore you with a ton of code paste I use various events of the formview to make sure the value displayed in the DDL is correct for the record that I am viewing at the time. All that works just fine. Where I need some pointers is the when I enter edit mode and change the DDL from say fire to ice it isn't getting persited to the database, all other info in the record gets updated just fine but the DDL never changes. I have tried several angles to getting this working and TBH my brain is yelling BREAK TIME.
I am using a form view control which has two binded textbox. Now at this level it works fine and the textboxes show the values from database. But when i insert a panel inside the form view and move these two textboxes inside the panel, they dont show any values. What could be the reason for this?
I was searching for my problem for last couple of days. But coudn't find a better solution. So here I go again. What I did which worked great: I was going to a asp page with pre populated Dataset (dataset is already loaded with data), for a GridView. If I do the following .... the GridView shows all the data (with the fields Dataset comes with).
Now what I am trying to do: I am trying to do exact same thing but instead of using GridView, I would like to display data in a FormView. So now I tried to do this
PROBLEM: I can see the FormView Header with text "Test Dataset With FormView" and below the Header it displays the page numbers. I know that I have 3 data in the data set and I can see 3 page link in the FormView. But PROBLEM is it doesn't display any Field / Data. Not sure why it is doing this
Note that I wouldn't know what field to display in the FormView. Whatever I have in the Dataset I need to display. Is there any work around to accomlish my work (maybe by not using a FormView, but other conrol ?). My original goal is to Display Data in a Form View Format (One data at a time