Michael
Michael

Reputation: 13616

Why Link Button control variable doesn't get any value?

I created LinkButton that located inside of Repeater Control. CategoryID is a variable in LinkButton Control that have to get value after Repeater Control was bound to data. But CategoryID always get zero.

I have the following ASP and C# code:

<asp:Repeater ID="rpt1" runat="server" 
            OnItemDataBound="rpt1_ItemDataBound" 
            OnItemCommand="rpt1_ItemCommand">    
   <ItemTemplate>  
       <div>
        <%# Eval("Name") %>-<%# Eval("CollectionType")%>
        <asp:LinkButton ID="LinkButton1" runat="server" Text="[edit item]"   
             PostBackUrl='AddItem.aspx?CategoryID=<%# Eval("CollectionID")%>' /> 
       </div>     
   </ItemTemplate> 
</asp:Repeater> 

Code behind:

public void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
         List<GlassesCollection> gc = BL.GetDataBL.GetCollection();
         rpt1.DataSource = gc;
         rpt1.DataBind();
    }
}

Any idea why CategoryID variable doesn't get any value and how can I fix the problem?

Upvotes: 1

Views: 321

Answers (1)

SilverlightFox
SilverlightFox

Reputation: 33538

A server control parameter cannot contain a mixture of literal text and evaluated expressions. The code you have will literally be posting back to AddItem.aspx?CategoryID=<%# Eval("CollectionID")%> and it will not be evaluating the code within the angle brackets.

You need to change your parameter like so

PostBackUrl='<%# "AddItem.aspx?CategoryID=" + Eval("CollectionID")%>' />

Upvotes: 1

Related Questions