I have a user control in C# in ASP.NET. This user control has a method in the code-behind that is defined as follows:
protected string GetGreeting(string name)
{
if (String.IsNullOrEmpty(name))
{
return "Hello";
}
else
{
return "Hello " + name;
}
}
My markup looks like the following:
<asp:Repeater ID="listRepeater" ClientIDMode="Static" runat="server" OnLoad="listRepeater_Load">
<HeaderTemplate>
<table id="listTable" style="width:100%;">
<thead><tr>
<th>Greeting</th>
<th>Actions</th>
</tr></thead>
<tbody>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# GetGreeting("FullName")%></td>
<td><a href='#'>view info</a></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>
How do I bind the FullName property of the record in my data source? Right now, I keep seeing “Hello FullName”. I want to see something like “Hello John Smith”. What am I doing wrong?
Thank you!
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
In your .aspx, you are calling GetGreeting("FullName"). This passes "FullName" literally.
Try
GetGreeting(Eval("FullName").ToString())
Method 2
The following should work:
<%# GetGreeting(DataBinder.Eval(Container.DataItem, "FullName").ToString()) %>
or a shorter form:
<%# GetGreeting(Eval("FullName").ToString()) %>
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0