【问题标题】:How to pass GridView row to TemplateField function?如何将 GridView 行传递给 TemplateField 函数?
【发布时间】:2012-04-04 04:50:38
【问题描述】:

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

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

这是我的 FullName 列的代码:

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

这是我对函数的声明:

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

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

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

【问题讨论】:

    标签: asp.net gridview templatefield


    【解决方案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);
      }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我在我的问题中添加了一个澄清。场景更复杂。实际上,我需要对 TemplateField 做一些计算。
      • 像这样调用你的函数。参数可以是你的 rowid 或名字,姓氏什么的。
      • 这不是我想做的。因为所有参数都包含在行中。最多可以有 20 个参数。所以我应该传递的只是行,然后从被调用函数的行中提取所有数据。
      • 然后只需在函数中传递您的数据键,然后获取您的项目。参考这个..可能对你有帮助forums.asp.net/t/1645113.aspx/1
      【解决方案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();
          ...
      

      希望这会有所帮助!

      【讨论】:

      • 谢谢!究竟是什么要求的答案!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      相关资源
      最近更新 更多