ObjectDataSource在“配置数据源”中没有显示数据对象

4
我正在使用Visual Studio 2008,在AppCode文件夹中包含了一个类,并希望在ObjectDataSource中使用它的函数。

我知道这已经很老了,但我遇到了类似的问题。我的问题出现在一个网站项目中。我总是忘记问题出在哪里,但对我来说,我必须确保网站使用的是Visual Studio的Web服务器而不是IIS。必须关闭然后重新打开Visual Studio。不确定是否适用于网站解决方案。 - pqsk
9个回答

2
在aspx中
<asp:GridView ID="GridView1" 
     AutoGenerateColumns="true" 
     DataSourceID="ObjectDataSource1" runat="server">
</asp:GridView>

<asp:ObjectDataSource ID="ObjectDataSource1"
     SelectMethod="GetCustomers"
     TypeName="MyNamespace.CustomerManager"
     runat="server"></asp:ObjectDataSource>

在App_Code目录下的.cs文件中。
namespace MyNamespace
{
    public class Customer
    {
        public string Name { get; set; }
    }

    public class CustomerManager
    {
        public List<Customer> GetCustomers()
        {
            List<Customer> cust = new List<Customer>();
            Customer c = new Customer();
            c.Name = "sampleName";
            cust.Add(c);
            return cust;
        }
    }
}

这样一来,我就能在 GridView 中看到客户的详细信息了。


1

我曾经遇到过同样的问题,最终通过将App_Code添加到TypeName中来解决...这是一个简单的修复方法,但花了很多时间才意识到它。(来自示例)

<asp:ObjectDataSource ID="ObjectDataSource1"
     SelectMethod="GetCustomers"
     TypeName="MyNamespace.App_Code.CustomerManager"
     runat="server">
</asp:ObjectDataSource>

重要的不是文件夹位置本身,而是命名空间。按照惯例,它们是相同的,但并非必须如此。最终,正确的命名空间使其正常工作,而不是它在那个文件夹中的位置。 - as9876

1
我的解决方案是确保相关的类都是公共的。这是一个旧的问题,但我偶然发现了这个线程,当我在思考这个问题时。

1

如果您已经尝试了以上所有方法,那么可能是您的计算机问题,可能是您的计算机不支持该功能。


我遇到了同样的问题 - 重新启动 Visual Studio 解决了它。 - trapsuutjies

1

1

您可以始终手动将对象名称输入到objectDatasource中,格式为:

namespace.classname,App_Code

对于网站项目,App_Code可以使用;否则,如果是Web应用程序项目模板,则指定Web项目的程序集名称。

希望对您有所帮助。


伙计,它已经在同一个程序集中了,但它仍然没有显示出来。 - Genius
1
有时候设计师可能不起作用,但如果你输入名称,其他功能如设置选择、插入等方法就会出现。否则,你可能需要手动添加所有内容... 如果你正在使用网站项目,则必须将程序集引用为 App_Code,但如果是 Web 应用程序项目,则不需要这样做。 - Brian Mains

0
我被引导到这个问题,因为我有类似的问题。 我的解决方案来自StevenMcD提供的以下答案:
右键单击App_Code文件夹中的.cs文件并检查其属性。 确保“生成操作”设置为“编译”。 位于App_Code中的类不可访问

0

请检查您的web.config文件中是否存在VS条目,例如可能导致此问题的部分(删除条目并重新构建)。


0
也许你是以“项目”而不是“网站”的方式打开的,我不知道为什么当以“项目”方式打开时数据对象不会显示给我。

我可以看出这是你第一次回答问题,所以你没有足够的声望将其发布为评论,但在未来,你可能想考虑将其发布为评论。答案应该是解决问题的解决方案,你应该相当有信心能够解决问题。 - Fluffeh

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