Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / Building Controls / June 2007

Tip: Looking for answers? Try searching our database.

UserControl... where is the clientID on the client side?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Monty - 21 Jun 2007 21:01 GMT
[ASP.Net 2.0, WAP, Atlas]

I have a custom usercontrol that looks something like this:

<%@ Control Language="vb" AutoEventWireup="false"
Codebehind="ItemPicker.ascx.vb" Inherits="myNS.ItemPicker" %>
<div runat=server id=divMain style="text-align:justify; overflow-x:hidden;">
<div id="divItemList" class="ItemPickerList" runat="server">
<asp:Repeater ID="rprItems" runat="server">
<ItemTemplate>
 <div class=ItemPickerItem id='<%#me.uniqueID
%>_<%#Container.DataItem("ItemID")%>'><%#Container.DataItem("Description")%></div>
</ItemTemplate>
</asp:Repeater>
</div>
</div>

In the Page_Load of this control, Me.ClientID =
"ctl00_ContentPlaceHolder1_ItemPicker1". However, when I look at the page
that is rendered, there is no element that has
"ctl00_ContentPlaceHolder1_ItemPicker1" as an ID. There is, of course,
"ctl00_ContentPlaceHolder1_ItemPicker1_divMain". I kinda thought if a
control had a client ID it would, uhhh, have that ID on the client. I tried
wrapping it all in a DIV and setting the DIV ID like so: <div
id='<%=me.clientID%>', but that was a no-go of course. The only reason I
care is because in the page that hosts this control I am registering the
control for AsyncPostBack  (like
ScriptManager.RegisterAsyncPostBackControl(ItemPicker1)). In the
__doPostBack event, it is looking for a control with the ID of
"ctl00_ContentPlaceHolder1_ItemPicker1", but of course can't find it. Any
suggestions? TIA!

(Bonus question: is there a MS newsgroup for Atlas?)
Walter Wang [MSFT] - 22 Jun 2007 10:40 GMT
Hi Monty,

I don't think you can use RegisterAsyncPostBackControl on a UserControl
instance. A control has ClientID property, doesn't necessary mean the id
will always be used on the rendered page. For a UserControl, by default it
only acts as a naming container (implements INamingContainer interface).
Child controls inside a naming container will use parent's ClientID as
prefix.

When a control is registered via RegisterAsyncPostBackControl, it must
occur in the posted form data. Usually a control that will post the form
can be used with it.

I also noticed you're using me.UniqueID to generate the client id of the
div; I think you should use ClientID (the difference between UniqueID and
ClientID is the separator used to compose the result from ID property).

There's no dedicated newsgroup for ASP.NET AJAX now, you can just post in
asp.net related newsgroups.

Regards,
Walter Wang (wawang@online.microsoft.com, remove 'online.')
Microsoft Online Community Support

==================================================
When responding to posts, please "Reply to Group" via your newsreader so
that others may learn and benefit from your issue.
==================================================

This posting is provided "AS IS" with no warranties, and confers no rights.

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.