Statement Within Formview / Error Databinding Methods Such As Eval(), XPath() And Bind()?
Jan 22, 2010
i have a FormView, it renders fields from a SQLServer database but also much static text specific to the database value I get. I dont know if this can be done in the code behind and put all this in a function . I put it in my formview
<ItemTemplate>
<% If Eval("Feature1") = "Yes" Then %>
<%# Eval("Username") %> A lot of text
<% elseIf Eval("Feature1") = "No" Then %>
<%# Eval("Username") %>
A lot of different text
<% End If %>
</ItemTemplate>
If I do the code above I get error message:
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control. Can this be done within the formview?
I have four fields on my insert form: Server, Farm, Silo and Reason. Farm and Silo populate based on the name of the server that is entered. If I take out the SelectedValue='<%# Bind("value") %> the form doesn't error out, but the fields don't post back to the DB.
I have a big problem...I have made a page has a Data FormView controland the insert template of this Formview control has DropDownList to allow the user to choose section (SectionsDDList)..and there's also another DropDownList allow the user to choose a teacher (TeachersDDList)...more infothe SectionsDDList get the section list from SqlDataSource control which the "Select Command" of is:"SELECT section_id,section_id FROM sections"the TeachersDDList get the teachers list from another SqlDataSource control which the "Select Command" of is:"SELECT teacher_id,teacher_name FROM teachers WHERE (section_id = @section_id)"finallyI want the TeachersDDList to be filled with teachers according to the selected section from the SectionsDDList...So,I enable the Auto postBack function of the SectionsDDListand add the next code for the SectionsDDList_SelectedIndexChanged event:TeachersDataSource.SelectParameters["section_id"].DefaultValue = ((DropDownList)sender).SelectedValue;be aware that both of the SectionsDDList & TeachersDDList have been Bounding to a column...and the problem I have faced is that:Exception Details: System.InvalidOperationException: Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.maybe you want to know the Stack Trace:[InvalidOperationException: Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.]
System.Web.UI.Page.GetDataItem() +93 System.Web.UI.TemplateControl.Eval(String expression) +33 ASP.cpanel_managecourses_aspx.__DataBinding__control82(Object sender, EventArgs e) in
I have a listview control on an .aspx page. Inside this list view i want to check "Type" property which comes from database. here is the example code :
[code]...
As a last resort i tried to user DataBinder.Eval() but i get the exception "Expected class, delegate, enum, interface, or struct". What can i be doing wrong? Writing a function in code-behind isn't an option for me.
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control. Description: An unhandled exception occurred during the execution of the current web request. review the stack trace for more information about the error and where it originated in the code. Exception Details: System.InvalidOperationException: Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.Source Error:
Line 97: lblprice1.Text = _dr1["price1"].ToString(); Line 98: lblprice.Text = _dr1["price"].ToString(); Line 99: Lbldate.Text = System.Convert.ToDateTime(miladitoshamsi(Eval("Date"))).ToString(" yyyy/MM/dd");
I have a datalist and would like to add an if statement within the Text part of my label.
Tried the following but it doesn't work
Note: if I do a normal eval Text='<%# Eval("UI_successful_trans")%>' the value returned from the database will be 1 or 0. Depending of which value is returned, I would like to have the text "Win" or "Lose" returned. ( I know that this could easily be done in code behind but I would like to know if it is
I have a gridview which I load with data on click of a button. For some reason the paging did not work. The paging number shows up but clicking on page # 2, 3 or 4 does not take you anywhere. the grid just disappears on clicking them. right after that when i click the button to generate the grid, the grid came up this time the gird is on page 2 or 3 instead of 1.
I have the following on page_indexing properly.
Protected Sub GV_Document_Hide_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GV_PSIDocument_Hide.PageIndexChanging GV_Document_Hide.PageIndex = e.NewPageIndex End Sub
I even tried by adding the databind() code inside the pageindexchanging as suggested in other threads but that didn't make any difference.
The only way I could get this going was by populating/loading the grid on page_load. I have to assign datasource & databind it every time irrespective of even postbacks. I tried IsNotpostback then the paging failed again Why does gridview needs loading on page_load every time if the paging needs to work properly?
I want to know where lies the difference between these two.I had a google search on this topic and a lots of replies and each of them tell the same thing:
Eval means one way binding(i.e;readonly) Bind means two way binding(i.e;both read as well as write the datasource)
but none of them explained it more clearly.all i want to know is how can i use the Bind to update/insert something from the datasource?
I have a FormView with an EditTemplate.And the EditTemplate contains an ascx control:
<asp:FormView ID="fvTicketUpdate" runat="server"
[code]...
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 : System.Web.UI.UserControl { protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack)
[code]...
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 got the difference between Bind and EVal from here. Bind will do both way reading and writing. And Eval do only reading. So any function only for writing?
However, once the update is finished (and I call e.Cancel = true), the LoginView control does not databind its children... so they are all blank. The FormView's viewstate is still fine, as all the rest of the controls outside of the LoginView appear fine. I even handle the FormView_DataBound event and a Trace shows that the FormView is being databound on postback.
Why then is the LoginView not keeping its ViewState/being databound? Here's a sample code snippet showing the flow:
I have a Formview ('formview1') with a pager. I also have a gridview ('gridview1') linked to a SQL datasource ('History'). I need to set the SelectParameter ('Serial') of the datasource to be the value of a field on the current page in the formview. The value i need to get is in the ItemTemplate and is a label called 'SerialNumberLabel'. So, something like:
<SelectParameters> <asp:ControlParameter Text = "Eval fromview1.currentpage.itemtemplate.SerialNumberLabel" >
I also need to ensure that the SQL source and gridview rebind when the pager is activated.