2
votes

I have a user control (ascx) that I have added two public properties to: RequestTypeId and GroupId. Both have the Bindable(True) attribute set.

In my aspx page, I have a ListView, and in the ItemTemplate, I place my control reference, like so:

    <asp:ListView ID="lv" runat="server">
        <LayoutTemplate>
            <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
        </LayoutTemplate>
        <ItemTemplate>
           <tr>
              <td>
                 <ctrl:ServiceTypeGroup id="ctrlServiceTypes" runat="server" RequestTypeId="<%#RequestType.RequestTypeId%>" GroupId='<%#Eval("Id")%>' />
              </td>
           </tr>
        </ItemTemplate>
    </asp:ListView>

Setting the RequestTypeId works fine. Setting the GroupId fails with the following error:

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

What do I need to do to my user control code to allow binding a Eval() expression to one of its properties? Or is it not possible?

1
Can you include the rest of the code? This error happens when the tag is outside the databound control but your description says it's inside. Maybe you missed something in how you set up the ListView?Yoenhofen
@Yoenhofen, I've posted an example ListView. Does that help, or do you need even more of the page?slolife

1 Answers

0
votes

There are some properties such as [Bindable(true)] which you can give to user controls.

Have you added this to the properties in question? It would look something like this:

[Bindable(true)]
public int RequestTypeID { get; set; }

[Bindable(true)]
public int GroupID { get; set; }

You will need the following at the top:

using System.ComponentModel;

More information: