Improve company productivity with a Business Account.Sign Up

x
?
Solved

Binding a web user control in another ContentPlaceHolder

Posted on 2006-07-18
7
Medium Priority
?
779 Views
Last Modified: 2008-01-09
I have a master page with multiple ContentPlaceHolders. The first one contains a web user control of class Controls_CategorySelector. The second one contains a data source, and one of its parameters is bound to the SelectedCategory property of the CategorySelector. How can this binding be done without compilation error?

<asp:Content ID="Content1" ContentPlaceHolderID="LeftMenuHolder" runat="Server">
    <uc1:CategorySelector ID="catSelector" runat="server" OnLoad="CategorySelectorLoad"/>    
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentHolder" runat="Server">
    <asp:SqlDataSource ID="ArticleDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:RTFMConnectionString %>"
        SelectCommand="listRecentArticles" SelectCommandType="StoredProcedure">
        <SelectParameters>
            <asp:ControlParameter ControlID="catSelector" DefaultValue="0" Name="categoryId"
                PropertyName="SelectedCategory" Type="Int32" />
        </SelectParameters>
    </asp:SqlDataSource>    
</asp:Content>

The ControlID "catSelector" is only found by the compiler if the data source and the CategorySelector are in the same ContentPlaceHolder.
0
Comment
Question by:pallosp
  • 4
  • 3
7 Comments
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17129733
What is 'CategorySelector' defined as?

Bob
0
 
LVL 9

Author Comment

by:pallosp
ID: 17130003
It is a RadioButtonList populated from code. The category ID belonging to the SelectedIndex property is led out as SelectedCategory.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17131211
I was trying to figure out what uc1:CategorySelector was, and it doesn't sound like a RadioButtonList.  Is it a third-party control, or a home-grown custom web control?

Bob
0
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 9

Author Comment

by:pallosp
ID: 17132459
Here is a simple code without web user controls that produce the same phenomenon:

masterpage.master:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"></asp:ContentPlaceHolder>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server"></asp:ContentPlaceHolder>
        </div>
    </form>
</body>
</html>

default.aspx:

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:GridView ID="GridView1" runat="server" DataSourceID="ObjectDataSource1">
    </asp:GridView>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetItems"
        TypeName="Class1">
        <SelectParameters>
            <asp:ControlParameter ControlID="TextBox1" Name="prefix" PropertyName="Text" Type="String" />
        </SelectParameters>
        </asp:ObjectDataSource>
</asp:Content>

app_code/class1.cs:

public class Class1
{
    public static string[] GetItems(string prefix) {
        return new string[] { prefix+"1", prefix+"2" };
    }
}

After TextBox1 had been moved to the first ContentPlaceHolder, the code didn't compile.
0
 
LVL 96

Expert Comment

by:Bob Learned
ID: 17132939
It compiled for me with TextBox1 under Context1.  I created a Web Site model type web site, and I don't know which type you created.  But, I can't see where that would cause a problem.

Bob
0
 
LVL 96

Accepted Solution

by:
Bob Learned earned 2000 total points
ID: 17132978
Aaah, yes, it's a run-time exception:

    Could not find control 'TextBox1' in ControlParameter 'prefix'.

Try this:

            <asp:ControlParameter ControlID="ContentPlaceHolder1$TextBox1" Name="prefix" PropertyName="Text" Type="String" />

Bob
0
 
LVL 9

Author Comment

by:pallosp
ID: 17133370
Big thanks!
0

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
There is a wide range of advantages associated with the use of ASP.NET. This is why this programming framework is used to create excellent enterprise-class websites, technologies, and web applications.
Through the video, you can check the migration process of Outlook PST file to PDF. Kernel for Outlook to PDF tool can convert Outlook emails with all attributes like Subject, To, From, Cc, Bcc and other folders such as Inbox, Outbox, Sent Items, Jun…
Watch the video to know the process of migration of Exchange or Office 365 mailboxes in absence of MS Outlook. It is an eminent tool which can easily migrate Public, Archive user mailboxes from one another Exchange server and Office 365. Kernel Migr…

579 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question