C# - Getting Eval To Work In A Databound, Templated Custom Control?

Sep 29, 2010

Context

I'm putting together a templated, databound control. Presently it works with the following syntax...
<cc:ItemChooserControl ID="ItemChooser" runat="server">
<TitleTemplate>
<h4><%# DataBinder.Eval(Container.DataItem, "DisplayName") %></h4>
</TitleTemplate>
</cc:ItemChooserControl>

Problem

What I would like though is that the shorter, simpler Eval would work instead.
<h4><%# Eval("DisplayName") %></h4>
What I get however when using straight Eval is an error:
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

Code

I'm databinding to a custom HtmlTableCell...
public class TitleTemplateTableCell: HtmlTableCell, INamingContainer
{
private object m_DataItem;
public virtual object DataItem
{
get { return m_DataItem; }
set { m_DataItem = value; }
}
}

With the following custom DataBind (non-related code removed)...

foreach (object dataItem in dataSource) {
TitleTemplateTableCell title = new TitleTemplateTableCell();
TitleTemplate.InstantiateIn(title); // TitleTemplate is the template property
title.DataItem = dataItem;
title.DataBind();
}

View 1 Replies


Similar Messages:

Web Forms :: How To Control Custom Templated Databound

Nov 11, 2010

I am fairly new to asp.net programming. I found this custom control that uses ajax to update the contents of the control and it is working perfectly. However, I need to access some of the asp.net labels and images in the databound event so I can set their values/properties appropriately, and am not sure how to go about adding additional code or accessing these in my custom control (I have been googling endlessly with no results). My code for the custom control is below.

Imports System
Imports System.Text
Imports System.IO
Imports System.Collections
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Microsoft.VisualBasic
Namespace myControls
Public Class AjaxDivView
Inherits CompositeDataBoundControl
Implements ICallbackEventHandler
Private _itemTemplate As ITemplate
''' <summary>
''' The ItemTemplate is used to format each item from the data source.
''' </summary>
<TemplateContainer(GetType(DivViewItem))> _
<PersistenceMode(PersistenceMode.InnerProperty)> _
Public Property ItemTemplate() As ITemplate
Get
Return _itemTemplate
End Get
Set(ByVal value As ITemplate)
_itemTemplate = value
End Set
End Property
''' <summary>
''' Register Javascript
''' </summary>
Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
'Register Refresh Function
Dim eRef As String = Page.ClientScript.GetCallbackEventReference(Me, Nothing, "AjaxDivView_Result", "'" & Me.ClientID & "'", "AjaxDivView_Error", False)
Dim refreshFunc As String = "function AjaxDivView_Refresh() {" & eRef & "}"
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), Me.UniqueID, refreshFunc, True)
MyBase.OnPreRender(e)
End Sub
''' <summary>
''' Iterate through the data items and instantiate each data item in a template.
''' </summary>
Protected Overloads Overrides Function CreateChildControls(ByVal dataSource As System.Collections.IEnumerable, ByVal dataBinding As Boolean) As Integer
Dim counter As Integer = 0
For Each dataItem As Object In dataSource
Dim contentItem As New DivViewItem(dataItem, counter)
_itemTemplate.InstantiateIn(contentItem)
Controls.Add(contentItem)
counter = counter + 1
Next
DataBind(False)
Return counter
End Function
''' <summary>
''' Render this control's contents in a Ul tag
''' </summary>
Protected Overrides ReadOnly Property TagKey() As System.Web.UI.HtmlTextWriterTag
Get
Return HtmlTextWriterTag.Div
End Get
End Property
''' <summary>
''' Render my contents to a string and send the result back to the client
''' </summary>
Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
Dim builder As New StringBuilder()
Dim sWriter As New StringWriter(builder)
Dim hWriter As New HtmlTextWriter(sWriter)
Me.RenderContents(hWriter)
Return builder.ToString()
End Function
''' <summary>
''' Whenever I get called through AJAX, rebind my data.
''' </summary>
Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
Me.DataBind()
End Sub
Public Class DivViewItem
Inherits WebControl
Implements IDataItemContainer
Private _dataItem As Object
Private _index As Integer
Public ReadOnly Property DataItem() As Object Implements System.Web.UI.IDataItemContainer.DataItem
Get
Return _dataItem
End Get
End Property
Public ReadOnly Property DataItemIndex() As Integer Implements System.Web.UI.IDataItemContainer.DataItemIndex
Get
Return _index
End Get
End Property
Public ReadOnly Property DisplayIndex() As Integer Implements System.Web.UI.IDataItemContainer.DisplayIndex
Get
Return _index
End Get
End Property
Protected Overrides ReadOnly Property TagKey() As System.Web.UI.HtmlTextWriterTag
Get
Return HtmlTextWriterTag.Div
End Get
End Property
Public Sub New(ByVal dataItem As Object, ByVal index As Integer)
_dataItem = dataItem
_index = index
End Sub
End Class
End Class
End Namespace

View 5 Replies

Custom Templated Control - To Modify Where Databound Data Is Output To?

Aug 31, 2010

Basically, I have a custom templated control with a custom data container class. When a developer adds an instance of my control to a page, they can define the controls in the LayoutTemplate however they like, as follows:

<ml:MyControl id="MyControl1" runat="server">
<LayoutTemplate>
<span><%#Container.ErrorMessage%></span>[code]...

I would like my control to automatically move the "ml_errormessage" (databound content from Container.ErrorMessage - hard coded token in the property) to be a class of its containing element to make it easier for jQuery to use a selector to find the element and dynamically insert the error message client side. More importantly, I would like it moved out of the way so the class name doesn't get replaced by the content and jQuery can find it as many times as it needs to during the page lifecycle. In other words, I would like the output to look like this without the developer changing the input template or resort to using custom controls in the template:

<span id="MyControl1"><span>
<span class="ml_errormessage"></span>
</span></span>

I would like to move the value using the controls collection rather than resorting to string parsing of the output, if possible. However, when I interrogate the collection in an override of OnPreRender, the control in the template looks like this in the debugger:

{System.Web.UI.DataBoundLiteralControl}
System.Web.UI.DataBoundLiteralControl: {System.Web.UI.DataBoundLiteralControl} [code]...

As you can see the "ml_errormessage" value is nowhere to be found. Upon analysis of the DataBind event of the Control class using Reflector, I see that it delegates the binding behavior to each control. In other words, each control handles its own databinding. However, since I have no way of knowing in advance what control types will be in the template, how can this change be done?

Note: an acceptable alternative would be to add a new HtmlGenericControl (span) in the exact spot where the "ml_errormessage" is and add it as a class to this new control.On a side note, is there an easy way to get the control's output to indent for easy reading during debugging?

View 1 Replies

How To Create Custom Multi-templated Tree Databound Control

Apr 5, 2010

I dont want to use asp.net's TreeView control. I want to create a custom template databound control with multi template support like -

<asp:MtNavigationControl>
<ItemTemplate>
...
...
</ItemTemplate>
<SelectedItemTemplate>
...
...
</SelectedItemTemplate>
<ParentItemTemplate>
...
...
</ParentSelectedItemTemplate>
<SelectedParentItemTemplate>
...
...
</SelectedParentSelectedItemTemplate>
</asp:MtNavigationControl>

My data is like -

class Employee
{
string EmployeeName
List<Employee> Employees
}

Does anyone know how to accomplish it?

View 1 Replies

How To Build A GridView Like DataBound Templated Custom Server Control

Apr 13, 2010

I am trying to develop a very simple templated custom server control that resembles GridView. Basically, I want the control to be added in the .aspx page like this:

[Code]....

I know that what I want to achieve is pointless and that I can use DataGrid to achieve it, but I am giving this very simple example because if I know how to do this I would be able to develop the control that I need.

View 1 Replies

Forms Data Controls :: Use Eval Or Bind In A Databound Control?

Sep 8, 2010

I have a repeater I've databound with a generic arraylist from a LINQ query (.ToList() ) in the code behind.

I was using

<%# Bind("FirstName")%> but noticed
<%# Eval("FirstName")%> works just as well.

Is it better to use Eval or Bind? or does it depend on the situation?

View 3 Replies

Data Controls :: How To Use EVAL Function Outside GridView DataBound Control

Dec 29, 2012

this is my hyperlink code that is in gridview

<ItemTemplate>
<asp:HyperLink ID="lnkRemove2" runat="server" CssClass="LBP3E" Text = "more..." NavigateUrl='<%# "state/view.aspx?BehCode=" + Request.QueryString["BehCode"] + "&Id=" + Eval("Id") %>'></asp:HyperLink>
</ItemTemplate>

I want do some thing like that for my button control that is not in gridview it is out of grid view...HOw I can do it?

View 1 Replies

Databinding Methods Such As Eval()/ XPath() And Bind() Can Only Be Used In The Context Of A Databound Control

Apr 3, 2010

I am getting the following error

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

but all I am trying to do is inside a ASP.NET REPEATER Control

<% if ( Eval("Message").ToString() == HttpContext.Current.Profile.UserName) %>
<% { %>
<asp:ImageButton runat="server" etc.... />
<% } %>

View 2 Replies

Error - Databinding Methods Such As Eval(), XPath(), And Bind() Can Only Be Used In The Context Of A Databound Control

Aug 11, 2010

[code]....

gives me error: Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.

I could write : <%# Eval("SaveDate") != DBNull.Value ? do magic But I need to do lots of html magic in if statement.

I know I should add # in order to use Eval, but not sure about correct syntax.

View 2 Replies

Forms Data Controls :: Eval(), XPath(), And Bind() Can Only Be Used In The Context Of A Databound Control?

Mar 9, 2010

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

[code]...

View 8 Replies

Custom Server Controls :: Custom Composite Control With Custom Templated Child Controls?

Mar 22, 2011

I am trying to build a custom composite control, which allows me to add custom content to each child control. It's a similar concept to what you have with a GridView and TemplateColumn. The markup used to place the control on the page would end up being something like this:

[Code]....

I have the code below, which allows me to put that markup on the page without throwing any errors, and it renders all the correct HTML, except it doesn't render the contents of the ColumnTemplate. I have replaced the Render() code with a comment because it's quite long winded and doesn't add anything important here:

[Code]....

I have tried to follow examples on MSDN and other forums but I can't make this work. I think I'm missing the code to render the contents of the template, but I don't know how to hook that up.

View 1 Replies

Custom Server Controls :: OnItemCommand Not Firing In Templated User Control?

Aug 11, 2010

I have a templated user control with single instance template attribute. It works great for everything except the following scenario:

[Code]....

The folder selector uses a tree view that allows people to select a folder, its FolderSelected event works perfectly and the file selector updates with the files. The file selector has a repeater that lists the files in the selected directory. It has a linkbutton for each of the files so that the user can select a file. The problem is that the ItemCommand event of the repeater doesn't fire when the file name is clicked on. The page performs the async postback like it should, but in debug, the method to handle the itemcommand event is never hit. On the same user control to select files there is a button that the user can add files to the folder. When it is clicked, the event DOES fire and the file is added and the control refreshes in the update panel, everything perfect. It seems that because the linkbutton is already in a templated control (which is in a user control, in a templated control), the event isn't firing correctly. I am confused as to why this should be a problem, especially since all the other events (even the custom ones) fire as long as they aren't in another templated control. Since the code is complicated, I didn't want to post it all here.

View 6 Replies

Forms Data Controls :: Make A Databound Control With A Custom Scrollbar?

Mar 22, 2010

I'm working on a website to showcase some of my bird photography, using ASP.NET 2.0 and C# with a SQLServerExpress backend.What I have right now is a ListBox bound to my database that displays a list of common names of birds and when the user clicks on an item in the listbox the main image on the page is changed to the image for that bird. For style reasons I want the listbox to always be a fixed size and because I specify the size (using CSS) a vertical scrollbar appears. My problem is that I want to provide my own images of arrows that go above and below the box such that when the user hovers over an arrow the box scrolls slowly and when the user clicks an arow the box scrolls quickly. Finally, my main problem is that I want to get rid of the ugly default vertical scrollbar that comes with ListBox.

Can you guys help me figure out how to do this? I don't mind using a different control other than ListBox as long as it is available in ASP.NET 2.0 and as long as it can be bound to my db. I also don't mind using JavaScript (which I'm sure I'll end up doing for the hover effects). Right now I'm fooling around with subclassing the ListBox control but I've never subclassed a control before so I'm somewhat clueless.

View 3 Replies

C# - Which Databound Control Should Be Use For Nested Databound Controls?

Dec 7, 2010

I want to render something like this (with ASP.Net Controls in the codebehind):

<ul>
<li class="first"><h1>This is a caption</h1></li>
<li><a href="#" title="" target="_self">Foo</a></li>
<li><a href="#" title="" target="_self">Foo1</a></li>
<li><a href="#" title="" target="_self">Foo2</a></li>
<li><a href="#" title="" target="_self">Foo3</a></li>
<li><a href="#" title="" target="_self">Foo4</a></li>
</ul>
<ul>
<li class="first"><h1>This is a another caption</h1></li>
<li><a href="#" title="" target="_self">Foo5</a></li>
<li><a href="#" title="" target="_self">Foo6</a></li>
<li><a href="#" title="" target="_self">Foo7</a></li>
<li><a href="#" title="" target="_self">Foo8</a></li>
<li><a href="#" title="" target="_self">Foo9</a></li>
<li><a href="#" title="" target="_self">Foo10</a></li>
<li><a href="#" title="" target="_self">Foo11</a></li>
</ul>

The amount of li elements that will be rendered into each ul is determined at runtime. Each link in a li belongs to into a specific ul (the one containing a specific caption. Imagine this as a kind of a treeview with nodes and subnodes) During the bind Event I need access to an ASP:HyperLink that will be rendered into the a-element. Which databound ASP.Net control should I pick for this? Looks like a repeater in a repeater, which should make the databinding process ugly. I'm thinking about creating this HTML-Output with StringWriters myself.

View 1 Replies

C# - Eval Check For DBNull Doesn't Work?

Mar 7, 2011

<%# Eval("Description") == DBNull.Value ? "empty" : "notempty"%>

is showing always 'notempty' even there is null in that field in DB (type of varchar(), null)...

Tried also checking for empty string:

<%# Eval("Description") == "" ? "empty" : "notempty"%>

and it always displays notempty... what's wrong here??

View 3 Replies

Web Forms :: Access A Control In Templated User Control?

Apr 15, 2010

I want to access a label in templated user control.

I find this code in internet, but it doesn't work.

Error:Object reference not set to an instance of an object.

public static Control FindControl(Control parent, string id)
{
Control recurse;
if (parent.ID == id)

[Code]....

View 4 Replies

IE 5 - 9 Are Slow To Work In SQL Databound Menu

Sep 7, 2010

I have a sqldatasource menu; 10 parents (catagories) with 77 children (subjects) & 627 grandkids (articles). There is no sitemap per say, the breadcrumbs are generated from code behind. This menu (to my understanding) is pure Asp.net with no tables and uses a generated XML file to populate the menu. I have Windows 7 on 1 disk & XP pro on another and have tested my website on both. I have a working local host on my Win7 in VWDE 2008 but I use the TinyMCE application to populate the library at my hosting service.

I open my website in Opera, FireFox, Chrome & Safari all work the main navigation menu with amazing speed. I'm happy with the amount of $$ I gave the programmer except IE (all of them) work the menu like molasses. I hoped IE 9 would resolve this but I've been playing with it and yes it is better - actually it measures up to the speed of IE 5 on this issue but still slow in comparison. So I'm asking someone to not solve this for me but give me some knowledge so that I can better state my case to the programmer I hire. I have found out that I can bleed a lot of $$ on vague statements.

The slowest IE works the menu (matt2414.info) is on the parents, faster on the children and as fast as the other browsers on the grandchildren. I've spent a lot of time trying to understand any of this but can't and when IE 9 failed to work the menu like the other browsers, well I really don't get it. Asp.net is Microsoft, IE is Microsoft, the menu is built in, through and for Microsoft products (I'm thinking if I put enough Microsoft fails in here I'll get a response, I have another post in web Forms with 37 views and 00 responses) yet it fails horribly next to ALL the other browsers. I'm a Microsoft fan and would really like to know what could have been done wrong by my hired programmer.

View 6 Replies

AJAX :: Why Control Toolkit And Custom Script Controls Do Not Work In Webparts

Aug 11, 2010

I am trying to implement a webpart control with some ajax functionality and I just realized that when the webpart is on the page in shared view and the user is not logedin then the webpart/ajax control does not fire the OnPreRender event and so the scriptcontrol does not get registered....

even tried puting a simple hovermenuextender on a webpart control and the same error occurs:

"Extender control 'HoverMenuExtender1' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors(). Parameter name: extenderControl"

this only happens when a webpart control is on the page in shared view and the user navigates to the page without being logged in....

View 1 Replies

Custom Pager Control - Previous And Next Hyperlinks Buttons Don't Work Properly

Mar 4, 2011

I develop a custom data pager control. Its "previous" and "next" hyperlinks buttons don't work properly and I don't understand why.

[code]...

I need to develop my own paging light control. Don't suggest me to use other paging controls.

View 1 Replies

Servercontrols - Creating Templated Server Control?

May 25, 2010

I want to be able to do something like this

<test:TabControl id="" runat="server"....>
<ItemTemplate>
<tabItem label="tab1" />
<tabItem label="tab2" />
</ItemTemplate>
</test>

The idea being here is that the only acceptable items in "ItemTemplates" are the tabitem types. There are many asp.net controls that use this, for example the ScriptManager class only allows you to specify certain types of objects under its various collections. Maybe thats the key to this.. I want to add a collection as opposed to a template. The idea is that in code I will then iterate over each "tabItem" and create the tab as I want it to look (probably rendering div's etc). Ive had a look at most of MSDN link on how to create templated controls but it doesnt seem to do exactly what I want it to. Would be grateful for some assistance.

View 1 Replies

Web Forms :: Ajax Control Toolkit And Custom Script Controls Do Not Work In Webparts?

Aug 18, 2010

I am trying to implement a webpart control with some ajax functionality and I just realized that when the webpart is on the page in shared view and the user is not logedin then the webpart/ajax control does not fire the OnPreRender event and so the scriptcontrol does not get registered....

even tried puting a simple hovermenuextender on a webpart control and the same error occurs:

"Extender control 'HoverMenuExtender1' is not a registered extender control. Extender controls must be registered using RegisterExtenderControl() before calling RegisterScriptDescriptors(). Parameter name: extenderControl"

this only happens when a webpart control is on the page in shared view and the user navigates to the page without being logged in....

View 1 Replies

Forms Data Controls :: Using Custom Text Before Eval?

Mar 4, 2011

I have a repeater that has been given a datasource from my database containing pictures. The problem is that when i create and log a user into my site i send him to a folder that has no access from others than the ones with a roles called User. When he creates his profile, he uploads a picture which is saved in the same folder "User/picture/picturename" and in the database "picture/picturename".

Now i need to pull this picture to the Default page page where users are not logged in. If i add an Image Control to the frontpage with ImageUrl='<%#Eval ("PictureThumbURL") %>' it tries to pull out the picture from the folder User which is obvious that it can't since it lacks the User/ in front.

Is it possible to get this picture by manually adding User/ to the ImageUrl='<%#Eval ("PictureThumbURL") %>' and if so, how?

View 6 Replies

C# - How To Programmatically Create A Default Template For A Templated Control

May 28, 2010

I'm creating a custom templated composite control. If there is no 'ItemTemplate' specified in the mark-up, how do I create a default template programmatically?

View 1 Replies

Forms Data Controls :: Databinding With Templated Used Control?

Jan 27, 2010

I've created a templated user control by following the example on the microsoft support pages. I won't post it all but the important part of the CS file looks as follows:

[Code]....

I'm not sure if the whole _CurrentDataItem business is required, I don't think so.The problem I've got, is that I've tried nesting it inside a FormView control so I can use it to display a record from a database. My ASPX looks like this:

[Code]....

Now, the bound properties (TitleText and TitleSubText) bind correctly, but the nested / template content is blank when the page loads. I'm not sure if this is something to do with the order in which everything is loaded or because I'm missing some code in the SimpleTemplate to get it to bind (etc.).

View 2 Replies

Web Forms :: Access Controls In Templated User Control?

Dec 20, 2010

I am trying to access a control from the code behind in a tmeplated user control and and keep getting an object reference exception.

Is it possible to access these controls. I have tried the find control and just referencing the object i.e. this.someID, non of which worked.

Here is my templated control:

[Code]....

Here is the template ascx code:

[Code]....

Here is the test user control that is using the template:

[Code]....

Here is the codebehind for the test user control:

[Code]....

I have also tried this which throws the same error:

Label label = (Label)this.Page.FindControl( "DateTimeLabel2" );
label.Text = DateTime.Today.ToString();

View 2 Replies







Copyrights 2005-15 www.BigResource.com, All rights reserved