Visual Web 部件是否支持设计器中的 ObjectDataSource?
我正在尝试使用 Visual Studio 2010 中内置的 Web 部件项目将一些 Sharepoint 2007 Web 部件升级到 SP2010。也就是说,我正在使用 Visual Web 部件来迁移我们现有的控件,这些控件广泛使用了 ObjectDataSource。但是,当将 ODS 添加到 Visual Web Part 项目中的控件时,它不会选取引用的类库项目中的对象。我能够从干净的设置中复制问题,如下所示:
创建新的 Visual Web 部件
向解决方案添加新的类库。
类代码如下:
using System; 使用 System.Collections.Generic; 使用 System.Linq; 使用系统文本;
namespace WebPartODS
{
[System.ComponentModel.DataObject(true)]
public class TestUser
{
[System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select,false)]
public List<int> TestMethod()
{
return new List<int>();
}
}
}
将类库项目添加为 Web 部件项目中的引用
在 VisualWebPart ascx 文件中,在“源”视图中添加一个 objectdatasource:
- 切换到设计视图,调出“配置数据源”向导。在下拉列表中,库项目中的类不会出现。
我在这里缺少一个步骤,或者尝试这样做有问题吗?
I'm trying to upgrade some Sharepoint 2007 webparts to SP2010 using the web part projects built into Visual Studio 2010. Namely, I'm using Visual Web Part to migrate our existing controls, which make extensive use of ObjectDataSource. However, when adding an ODS to the control in the Visual Web Part project, it will not pick up objects in referenced class library projects. I was able to duplicate the problem from a clean setup as follows:
Create a new Visual Web Part
Add a new class library to the solution.
Class code is as follows:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebPartODS
{
[System.ComponentModel.DataObject(true)]
public class TestUser
{
[System.ComponentModel.DataObjectMethod(System.ComponentModel.DataObjectMethodType.Select,false)]
public List<int> TestMethod()
{
return new List<int>();
}
}
}
Add the class library project as a reference in the Web Part project
In the VisualWebPart ascx file, add a objectdatasource in the Source view:
<asp:ObjectDataSource ID="TestOD" runat="server"></asp:ObjectDataSour
ce>
- Switch to Design view, bring up the "Configure data source" wizard. On the drop down, the class from the library project will not appear.
Is there a step that I am missing here, or is there an issue with trying to do it this way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的,我已经开始工作了。这是我得到答案的地方: MSDN 论坛
我最初为我的业务层提供了一个单独的类。我删除了它并将代码放入
ascx.cs
文件中。然后我将以下代码行添加到我的页面加载方法中。我还从 ascx 页面中删除了
TypeName
。Ok, i got it to work. Here is where i got my answer: MSDN Forumn
I originally had a separate class for my business layer. I removed it and put my code in the
ascx.cs
file. Then I added the following line of code to my page load method.I also removed the
TypeName
from the ascx page.