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;
}
看看。你可以做格式化等。
至少它适用于我的测试页,我希望它也适用于你。
我一直在将 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;
}
看看。你可以做格式化等。 至少它适用于我的测试页,我希望它也适用于你。