如何将GridView行传递给TemplateField函数?

4
我有一个GridView,它有三列:FirstName、LastName和一个模板字段FullName,我在其中将FirstName和LastName串联起来。
假设我想调用DisplayFullName函数来连接FirstName和LastName,我该如何将行参数传递给函数,以及如何声明函数的参数?谢谢。
这是我的FullName列的代码:
        <asp:TemplateField HeaderText="FullName">
            <ItemTemplate>
                <%# DisplayFullName(???) %>
            </ItemTemplate>
        </asp:TemplateField>

这里是关于该函数的声明:

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

我需要帮助的地方是在哪里?或者说我是否需要传递整个行?如果每次调用DisplayFullName时,“当前”行都是已知的。如果是这样,我如何在DisplayFullName中访问当前行?

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

3个回答

3

因为似乎没有人给你一个完全符合你要求的答案,所以我必须发帖回答——将行传递到后端函数。

只需将“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();
    ...

希望这可以帮到您!

1
谢谢!回答了确切所问的问题! - Jeancarlo Fontalvo
1
终于有人回答了实际提出的问题。谢谢! - Brobic Vripiat

1

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

    <asp:TemplateField HeaderText="Name">
                <ItemTemplate>
                    <%#Eval("FirstName") %>&nbsp;<%#Eval("LastName") %>   
                </ItemTemplate>
            </asp:TemplateField>
</asp:TemplateField>

我在我的问题中添加了澄清。情况更加复杂。实际上,我需要对TemplateField进行一些计算。 - RJIGO
<%# FunctionName(parameter1, parameter2, ..., parameterN) %> 调用您的函数。参数可以是行ID、名字或姓氏等任何内容。 - Neha
这不是我想做的事情。因为所有的参数都包含在行中。最多可能有20个参数。所以我只需要传递行,然后在被调用的函数中提取行中的所有数据。 - RJIGO
然后只需将您的数据键传递给函数,然后获取您的项目。 参考此链接..可能会对您有所帮助http://forums.asp.net/t/1645113.aspx/1 - Neha

1

@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);
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接