0

PHP から来て、PHP は本当に気にしないので、特定の型を割り当てたり返したりすることに慣れていません。しかし、Java と C# の世界に戻ると、これらの言語は気にします。「この型を渡す」と言うと、その型が期待されます。それで、私は何を間違っていますか、これをSPList型にする方法を作成するにはどうすればよいですか

次のような非常に基本的な機能があります。

    protected void createNewList(SPFeatureReceiverProperties properties)
    {
        Dictionary<string, List<AddParams>> param = new Dictionary<string, List<AddParams>>();

        // Create the keys
        param.Add("Name", new List<AddParams>());
        param.Add("Type", new List<AddParams>());
        param.Add("Description", new List<AddParams>());

        // Set the values
        param["Name"].Add(new AddParams { type = SPFieldType.Text, required = true });
        param["Type"].Add(new AddParams { type = SPFieldType.Text, required = true });
        param["Description"].Add(new AddParams { type = SPFieldType.Text, required = true });

        // Create the really simple List.
        new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");
    }

これにより、Web パーツをアクティブ化すると、SharePoint 2010 リストであるリストが作成されます。その名前は Fake List で、いくつかの列をそれらの尊重されたパラメーターとともに渡していることがわかります。このSPAPI.Lists.Create方法を見てみましょう:

    public Create(SPFeatureReceiverProperties properties, Dictionary<string, List<AddParams>> columns, 
        string name, string description, SPListTemplateType type, string viewDescription)
    {

        SPSite siteCollection = properties.Feature.Parent as SPSite;
        if (siteCollection != null)
        {
            SPWeb web = siteCollection.RootWeb;
            Guid Listid = web.Lists.Add(name, description, type);
            web.Update();

            // Add the new list and the new content.
            SPList spList = web.Lists[name];
            foreach(KeyValuePair<string, List<AddParams>> col in columns){
                spList.Fields.Add(col.Key, col.Value[0].type, col.Value[0].required);
            }

            spList.Update();

            //Create the view? - Possibly remove me.
            System.Collections.Specialized.StringCollection stringCollection =
                new System.Collections.Specialized.StringCollection();

            foreach (KeyValuePair<string, List<AddParams>> col in columns)
            {
                stringCollection.Add(col.Key);
            }

            //Add the list.
            spList.Views.Add(viewDescription, stringCollection, @"", 100,
                true, true, Microsoft.SharePoint.SPViewCollection.SPViewType.Html, false);
            spList.Update();
        }
    }

ここでは、Sharepoint で使用する SPList オブジェクトを作成するだけであることがわかります。展開すると、ページに追加できる新しいリストができます。だから問題は何ですか?

Php ではcreateNewList(SPFeatureReceiverProperties properties)、タイプ SPList のオブジェクトを要求する関数に を渡すことができ、それは機能します (何かが欠けている場合を除きます >.>) ここでは、SPList ではありません。

だから私の質問は:

リストを作成し、SPLIst オブジェクトを返すことができるようにするには、何を変更する必要がありますか? それは同じくらい簡単ですかreturn new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");

それは私には正しいように思えるからです。

アップデート

メソッド シグネチャを SPList に変更して を返してreturn new ....も機能しませんでした。

4

1 に答える 1

0

両方のメソッドから SPList を返す必要があります。

protected SPList createNewList(SPFeatureReceiverProperties properties)
{
    //Do the stuff

    SPList result = new SPAPI.Lists.Create(properties, param, "Fake List", "Sample Description", SPListTemplateType.GenericList, "Sample View Description");
    return result;
}

public SPList Create(SPFeatureReceiverProperties properties, Dictionary<string, List<AddParams>> columns, 
    string name, string description, SPListTemplateType type, string viewDescription)
{
    // Do the stuff

    return spList;
}
于 2013-06-06T17:48:39.850 に答える