2012-07-12 42 views
1

我查看了网络并发现了很多答案,其中没有一个帮助我解决此问题!ObjectDataSource'''找不到非通用方法GetAllUsers

我在数据项目中有一个方法。然后我有一个显示元素的项目。

代码隐藏:

public static DataTable GetAllobjs(SPWeb objWeb) 
{ 
    DataTable tmpData = new DataTable(); 
    try 
    { 
     allProjects.Columns.Add(ColumnNames.1); 
     allProjects.Columns.Add(ColumnNames.2); 
     allProjects.Columns.Add(ColumnNames.3); 
     allProjects.Columns.Add(ColumnNames.4); 
     allProjects.Columns.Add(ColumnNames.5); 
     allProjects.Columns.Add(ColumnNames.6); 
     allProjects.Columns.Add(ColumnNames.7); 
     allProjects.Columns.Add(ColumnNames.8); 
     allProjects.Columns.Add(ColumnNames.9); 

     //Get the raw project data 
     List<obj> data= DataAquisition.GetAllobj(objWeb); 

     /// Loop through the raw data. 
     foreach (obj currentInformation in data) 
     { 
      // Creates a new data row containing information required and adds it to the DATAtable 
     } 
    } 
    catch (Exception exc) 
    { 
     // Logs errors here 
    } 
    return tmpData; 
} 

在页面背后(CS)的用户控制I有一个调用GetAllobjs(的SPWeb objWeb)

[DataObjectMethodAttribute(DataObjectMethodType.Select, true)] 
public DataTable GetAllUsers() 
{ 
    return Data.GetAllobjs(SPContext.Current.Web); 
} 

然后,页面负载的方法的:

ObjectDataSource d = new ObjectDataSource(); 
d.ID = "s"; 
d.SelectMethod = "GetAllUsers"; 
d.TypeName = SPGridView.GetType().AssemblyQualifiedName; 
this.Controls.Add(d); 
/// Apply a data source to the SPGrid View 
SPGridView.DataSourceID = d.ID; 

然后在创建子控件上,我创建并将我的字段绑定到SPGridview并调用数据绑定。

我认为这会工作,但我得到的错误。我不确定我是否在某处丢失了更多的组件模型标签,我希望有人能够指出我出错的地方。

回答

3

变化:

d.TypeName = SPGridView.GetType().AssemblyQualifiedName; 

到:

d.TypeName = this.GetType().AssemblyQualifiedName; 

实施例: Default.aspx.cs

using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 

namespace Q11454649WebApp 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!this.IsPostBack) 
      { 
       ObjectDataSource d = new ObjectDataSource(); 
       d.ID = "s"; 
       d.SelectMethod = "GetAllUsers"; 
       //d.TypeName = SPGridView.GetType().AssemblyQualifiedName; 
       d.TypeName = this.GetType().AssemblyQualifiedName; 
       this.Controls.Add(d); 
       /// Apply a data source to the SPGrid View 
       SPGridView.DataSourceID = d.ID; 
      } 
     } 

     [System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, true)] 
     public string[] GetAllUsers() 
     { 
      return new string[] { "Joe", "Alan", "Michel" }; 
     } 
    }        
} 

Default.aspx的

<%@ Page Language="C#" AutoEventWireup="true" Codebehind="Default.aspx.cs" Inherits="Q11454649WebApp._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:GridView ID="SPGridView" runat="server" AutoGenerateColumns="False"> 
       <Columns> 
        <asp:TemplateField> 
         <ItemTemplate> 
          <asp:Label ID="Label1" runat="server" Text="<%# Container.DataItem %>"></asp:Label> 
         </ItemTemplate> 
        </asp:TemplateField> 
       </Columns> 
      </asp:GridView> 
     </div> 
    </form> 
</body> 
</html> 

归档项目:Q11454649WebApp.7z

+0

aahhhhhgggg这个工作的对待每一次我那种似乎再次添加我的用户控制时间grrrrr – Truezplaya 2012-07-12 15:55:42