我有一个包含3列的GridView:FirstName,LastName和TemplateField FullName,其中我将FirstName和LastName串在一起。
假设调用DisplayFullName是我想用来连接FirstName和LastName的函数,如何将row参数传递给函数以及如何声明函数的参数?谢谢。
这是我的FullName列的代码:
<asp:TemplateField HeaderText="FullName"> <ItemTemplate> <%# DisplayFullName(???) %> </ItemTemplate> </asp:TemplateField>
这是我对该功能的声明:
protected string DisplayFullName(???) { ... }
???是我需要帮助的地方。或者我是否需要通过该行?如果每次调用DisplayFullName,则“当前”行是已知的。如果是这样,我如何访问DisplayFullName中的当前行?
为了清楚起见,我简化了操作。实际上,我需要的行中最多可以有20个值,我想在所调用的函数中进行一些计算。
答案 0 :(得分:2)
我不知道为什么你在这里调用一个函数来显示全名。 您可以在代码中使用这样的方法来实现全名:
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<%#Eval("FirstName") %> <%#Eval("LastName") %>
</ItemTemplate>
</asp:TemplateField>
</asp:TemplateField>
答案 1 :(得分:2)
@RJIGO:你可以使用这样的函数:
<asp:TemplateField HeaderText="Name">
<ItemTemplate>
<%# DisplayFullName(Eval("FirstName"), Eval("LastName"))%>
</ItemTemplate>
</asp:TemplateField>
你的代码隐藏方法会喜欢这个
protected string DisplayFullName(object FirstName, object LastName)
{
return Convert.ToString(FirstName)+Convert.ToString(LastName);
}
答案 2 :(得分:2)
不得不发帖,因为似乎没有人给你一个完全符合你要求的答案 - 将行传递给后端函数。
只需将“Container.DataItem”传递给您的函数 - 这就是DataRow
<asp:TemplateField>
<ItemTemplate>
<%# DisplayFullName(Container.DataItem) %>
</ItemTemplate>
</asp:TemplateField>
然后在CodeBehind中,您可以将其作为DataRowView进行操作:
public string DisplayFullName(object containerDataItem)
{
string firstName = ((DataRowView)containerDataItem)["FirstName"].ToString();
string lastName = ((DataRowView)containerDataItem)["LastName"].ToString();
...
希望这有帮助!