asp:GridView -> asp:TemplateField 调用 Public 方法在控件内部不可用

asp:GridView -> asp:TemplateField Calling Public Method Not Available Inside Control

我一直在将 aspx 页面迁移到新的 ASP.NET WebApplication。我经常在 Gridview 中调用 public 方法。但是我的页内引用看不到代码隐藏方法。

我正在使用框架 4.7.2。我得到

ERROR: CS0103 The name 'GetReturnedString' does not exist in the current context

我的所有其他服务器控件都可以访问,只是这些 public 定义的方法不行。 Google 运气不好 :(

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
    DataSourceID="SqlDataSource1">
    <Columns>                                
        <asp:TemplateField>
            <ItemTemplate>
                <asp:Literal ID="ltlString" runat="server" 
                    Text='<%# GetReturnedString(Eval("FieldExample1").ToString())%>'>
                </asp:Literal>
            </ItemTemplate>               
        </asp:TemplateField>
    </Columns>
</asp:GridView>

我后面的示例代码如下所示:

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    public string GetReturnedString(string fieldval1)
    {
        var outValue = "Something";
        return outValue;
    }
}

我将从页面隐藏代码中对 GridView 进行数据绑定,并在数据绑定之前将内容添加到数据表列。 然后 aspx 页面将具有:

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" >
        <Columns>                                
            <asp:TemplateField>
                <ItemTemplate>
                    <asp:Literal ID="ltlString" runat="server" 
                                 Text='<%# (Eval("FieldExample1").ToString()) %>'>
                    </asp:Literal>
                </ItemTemplate>               
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

文件背后的代码:

    DataTable dtB = new DataTable();
    dtB = //get the datatable from your data source

    if (dtB != null && dtB.Rows.Count > 0)
        {
            foreach (DataRow drB in dtB.Rows)
            {
                drB["FieldExample1"] = GetReturnedString() + drB["FieldExample1"];
            }
        }
        GridView1.DataSource = dtB;
        GridView1.DataBind();

   public string GetReturnedString()
   {
      var outValue = "Something ";
      return outValue;
   }

看看。你可以做格式化等。 至少它适用于我的测试页,我希望它也适用于你。