如何从aspx页面调用后台代码方法?

13

我有一个包含名为DevList的字段的对象,其定义如下:

public List<string> DevList { get; set; }
我还定义了一个名为 DisplayListOfDevelopers 的方法,该方法旨在将开发人员列表连接起来并将其显示为一个字符串。

这是我从 aspx 中调用该方法的方式。

<asp:TemplateField HeaderText = "Developer(s)">
 <ItemTemplate>
   <asp:Label 
        ID="_lblDevList" 
        runat="server" 
        Text= '<%# DisplayListOfDevelopers(DevList) %>'>
   </asp:Label>
 </ItemTemplate>
</asp:TemplateField>

但是,我遇到了这个错误:在当前环境中找不到 'DevList' 的名称

我有什么遗漏吗?

编辑

_gvStatus = ds;
_gvStatus.DataBind();

ds 只是一个包含 DevList 的对象列表。

感谢帮助。


你在代码后台文件中定义了变量吗? - Shyju
DevList属性是否位于与GridView/ListView数据源连接的类中? - Silagy
你想要显示每一行的完整列表吗? - Sklivvz
是的,我想在每个名称的末尾添加一个 <br/>,以便将受项目影响的开发人员从左到右显示而不是并排显示。这就是函数 DisplayListOfDevelopers 应该完成的任务。 - Richard77
1个回答

17

假设你的类长这样:

public class MyItem
{
    public List<string> DevList { get; set; }
}

那样就可以了。

ds = List<MyItem>();

请按照以下步骤进行操作:

在您的代码后台中:

protected string DisplayListOfDevelopers(object _devList)
{
    //Cast your dev list into the correct object
}

在您的标记中:

<asp:TemplateField HeaderText="Developer(s)">
 <ItemTemplate>
   <asp:Label 
        ID="_lblDevList" 
        runat="server" 
        Text='<%# DisplayListOfDevelopers(Eval("DevList")) %>'>
   </asp:Label>
 </ItemTemplate>
</asp:TemplateField>

只需确保您在代码后端中的函数是受保护或公共的。


谢谢。现在它可以工作了。不过,我听说 Eval 对性能不好。 - Richard77
1
相比之下是什么?你有参考资料吗? - Lawrence Johnson

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