4

我有一个 GridView,它有 3 列:FirstName、LastName 和一个 TemplateField FullName,我将 FirstName 和 LastName 串在一起。

假设调用 DisplayFullName 是我想用来连接 FirstName 和 LastName 的函数,我如何将行参数传递给函数以及如何声明函数的参数?谢谢。

这是我的 FullName 列的代码:

        <asp:TemplateField HeaderText="FullName">
            <ItemTemplate>
                <%# DisplayFullName(???) %>
            </ItemTemplate>
        </asp:TemplateField>

这是我对该函数的声明:

protected string DisplayFullName(???)
  { ... }

这 ???是我需要帮助的地方。或者我是否需要通过该行?如果每次调用 DisplayFullName,则“当前”行是已知的。如果是这样,我如何访问 DisplayFullName 中的当前行?

为了问题的清晰起见,我简化了操作。实际上,我需要的行中最多可以有 20 个值,我想在调用的函数中进行一些计算。

4

3 回答 3

2

我不知道你为什么在这里调用一个函数来显示全名。您可以在代码中使用这样的方式来实现全名:

    <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                    <%#Eval("FirstName") %>&nbsp;<%#Eval("LastName") %>   
                </ItemTemplate>
            </asp:TemplateField>
</asp:TemplateField>
于 2012-04-04T05:06:06.030 回答
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);
  }
于 2012-04-04T05:37:02.340 回答
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();
    ...

希望这可以帮助!

于 2016-08-04T22:35:53.567 回答