1

私はウェブを調べて、この問題を解決するのに役立たなかったたくさんの答えを見つけました!

データプロジェクトにメソッドがあります。次に、displaying要素を持つプロジェクトがあります。

コードビハインド:

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;
}

ユーザーコントロールのbehind(cs)ページに、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にバインドし、databindを呼び出します。

これでうまくいくと思いましたが、エラーが発生します。どこかでコンポーネントモデル[]タグが欠落しているかどうかはわかりませんが、誰かがどこで間違っているのかを指摘してくれることを期待していました。

4

1 に答える 1

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

于 2012-07-12T15:04:26.687 に答える