【问题标题】:Calling a codebehind method from aspx page from gridview从 gridview 的 aspx 页面调用代码隐藏方法
【发布时间】:2010-11-23 21:56:54
【问题描述】:

如何从 aspx 页面中的 gridview 调用代码隐藏/类方法?另外,我需要将数据绑定列的值传递给该方法。这可能吗?

类似这样的:

<asp:BoundField DataField="Precision" />
<asp:BoundField DataField="MyNumber" DataFormatString="FormatHelper.Format(MyNumber, Precision)" />

【问题讨论】:

  • 您需要提供更多信息。首先,您是如何获取数据的?到底想做什么?

标签: c# .net asp.net vb.net gridview


【解决方案1】:

编辑:我对此进行了测试。

<asp:TemplateField HeaderText="My Number">
  <ItemTemplate>

        <asp:Label runat="server" 
           Text='<%# Eval("MyNumber", FormatHelper.Format((decimal)Eval("MyNumber"), (decimal)Eval("Precision") )) %>' />

  </ItemTemplate>
</asp:TemplateField>

这是有效的,因为 Eval 方法将DataFormatString 作为可选的第二个参数。 注意:确保使用方法签名的适当类型替换强制转换。

一种更简单的方法可能是绑定到 linq-to-objects 投影。

myGridView.DataBind( from foo in fooList
                     select new {
                       MyNumber = MyNumber,
                       Precision = Precision,
                       MyFormattedNumber = FormatHelper.Format(MyNumber, Precision),
                     } );

【讨论】:

  • 谢谢,这正是我想要的。会试一试...
  • 不幸的是,我收到此错误:只有具有 DataBinding 事件的对象才支持数据绑定表达式。 System.Web.UI.WebControls.BoundField 没有 DataBinding 事件。
【解决方案2】:
  1. GridView.DataKeys房产
  2. Button.CommandArgument房产

【讨论】:

    【解决方案3】:
    1. 在网格视图中创建一个模板字段。
    2. 在模板字段中添加一个按钮,并给按钮一个 命令名(例如:“btn”)
    3. 处理rowdatabound事件并检查rowType=DataRow then:

      然后使用FindControl 方法获取该行中的按钮 填写它的CommandArgument你想要的值(例如:e.Row.DataItem("ID"))

    4. 处理rowcommand 事件:

      如果 commandname="btn" 那么 按钮被点击

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多