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

M

Monty

[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?)
 
W

Walter Wang [MSFT]

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 ([email protected], 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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,021
Latest member
AkilahJaim

Latest Threads

Top