I'm working on a user control that renders couple nested divs (a rounded corner box to be frank). This is a templated user control, which means that user can put any control he wants into the header, body or footer of this box. Everything is working fine, except the fact that server-side controls can't be retrived from my box. Take a look at this code:
[Code]....
Now codebehind of that control:
[Code]....
I have cut out all the unimportant stuff.Now when I use this control:
[Code]....
I want to access controls in page codebehind file (on Page Load): LiteralNewses.Text=""; but compiler returns an error that LiteralNewses doesn't exist. Also FindControl method can't find this literal.Any tips on what's wrong with this code? According to MSDN, setting TemplateInstance to Single ensures that controls from template will be accessible but not in my case...
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.
I have a ObjectDataSource and a ListView referencing it.
I have created a Templated User Control (see: http://msdn.microsoft.com/en-us/library/36574bf6.aspx) and placed it in the ListView's InsertItemTemplate It has one template <ContentTemplate>. Inside that template, I've defined a couple of server controls with their properties = '<%# Bind("colName") #>'.
I want to use a couple of instances of the same control on a page. The user control is intended to display a list of records in a repeater. The aim is that the second control will show a list excluding the IDs in the first control The control has a number of public properties, including IDsInThisList, and IDstoExclude. The query will exclude the IDs in the second property.
What I would like to do is get the record IDs from the first instance of the control (IDsInThisList), and pass them to the second contro as the IDsToExclude.
I have a test page where I am setting the properties of the controls in code. As you might guess, it's not working! The first control displays the top 3 items, as desired, but the second display the records 1-7, rather than records 4-10 because it is not receiving the IDstoExclude from the first control When I response write the IDstoExclude from the first control in my testpage, the string is empty. (if I do it from within the control, it shows the IDs)
How can I get the controls to fire in order and pass values to each other?
Screen grab of test page + uc and test page code attached
How can I access a webform control from a Web User Control?
I have a web form with some textboxes and dropdownlists. I created a Web User Control with other controls (other textboxes) inside it. Now I need to call from the web control source code the values that the controls in my web page have. How do I do it?
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
I have a ASP.Net project that is setup in such a way that it can be dropped into any site and "just work." All the paths are relative to the current file, not relative to the "~". The paths are determined by ThePath = this.TemplateSourceDirectory;
This is working for everything expect registering a custom control that is created and added to one of the pages. I can add the control just fine with the Page.LoadControl but I cant cast it as the correct type to access anything.
How can I add a reference to the class from within the code itself?
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.).
I don't think I understand fully how ASP.NET does inheritance of controls.I have a user control, ucBase, which has an asp.net label in the ascx file. Code behind references the label and it works fine during run time if the control is not a parent for another user parent.
If I have another user control, ucChild, inheriting from ucBase, the label in ucBase's code is always null. ucChild has no controls in its ascx fileThe server controls (like the label) needs to be declared in the ascx file and not created programmatically.What needs to be done for ucBase to see its own controls when it's a parent user control?
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.
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(); }
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?
I'm having trouble to access a Parent's property in User Control. I don't know how to access the parent. The Parent Page's name is Search.aspx. I saw the example below and tried it:
[Code]....
Than I could access the Parent's Property, but when I ran the website I got these errors:
1. The user control is not declared in the parent page 2. The user contol has a circular reference
I Have a webpage named "Test.aspx" and a web user control named "TestWebContro.ascx",..
i have a "Linkbutton" on "TestWebContro.ascx" and "Label" on "Test.aspx",.. now my query is how can we change the text value of "label" on the click event of "LinkButton",...
I have an asp.net 3.5 WebSite application where I have a bunch of UserControls.
In some scenarios I have a reference of type Control (System.Web.UI.Control) that I need to cast to a specific User Control type (to access public properties and methods of the User Control).
The User Control classes are all declared in "the global scope", i.e. not within a namespace. However, for some reason, only some of my User Controls is possible to type in a code file and show up in intellisense and some just wont. In one scenario I could write the cast in code anyway and the site would build (but the UserControl type name did not shift in to the ordinary class name color (light green, you know) in VS text editor), but when running the page I still get the error message about missing using directive or a reference...
If I use the VS 2010 "Navigate to" feature (Ctrl+,) and search for a type I usually get one hit for the Type/Class name and another for the actual file. When searching on my User Control class names I only get the file hits, no class representation. This even goes for those User Control types I actually can access in code.
I've tried to compare the User Control classes that work and doesn't work, but I can't find any difference, they are all declared as public partial.