7

SharePoint 2007 のリスト項目に単純なテキストまたはハイパーリンク フィールドを追加しようとしています。

問題なくフィールドを追加できます。

list.Fields.Add("MyField",SPFieldType.Text, false);

そして、それは私のリスト項目にうまく表示されます。ただし、どの方法を試しても、フィールドの値をプログラムで設定することはできません。私は試した:

list.items[0]["MyField"] = "text";

フィールドにロードしようとしました:

SPField field = list.items[0].Fields["MyField"];

そこに設定し、デフォルト値を設定して更新しますが、何も起こりません。

コード ブロックは常に list.update(); で終了します。または、アイテム自体を操作している場合 item.update(); だから私は少なくともそれを見逃していません。誰が私が間違っているのか教えてもらえますか?

ありがとう

4

4 に答える 4

10

試す:

SPListItem item = list.items[0];
item["MyField"] = "text";
item.Update();

同等のように見えますが、上記のコードは次のものと同じではありません。

list.items[0]["MyField"] = "text";
list.items[0].Update();

詳細については、同じ動作を文書化した人については、こちらこちらを参照してください。

于 2010-10-11T14:11:11.327 に答える
3

新しいフィールドを追加してデフォルト値を設定するためにこれを試していただけますか? テストされていないコード。それがどうなるか教えてください。

SPFieldText fldName = (SPFieldText)list.Fields.CreateNewField(SPFieldType.Text.ToString(), "mycolumn");
fldName.DefaultValue = "default";
list.Fields.Add(fldName);
list.Update();
于 2010-10-11T07:28:47.037 に答える
1

私は常に、インデクサー ルートを使用するのではなく、リスト アイテムへの参照を直接取得し、具体的に更新することが最善のルートであることを発見しました。リッチの最初の例が言及したように。

http://www.sharepointdevwiki.com/display/public/Updating+a+List+Item+programmatically+using+the+object+model

于 2010-10-11T18:26:20.937 に答える
0

上記のすべての説明から、リスト イベント ハンドラーでフィールド値を設定しようとしていて、アイテムの追加またはアイテムの更新イベントで値を設定しているように見えます。この場合は、AfterProperties を考慮する必要があります。*ing イベントと *ed イベントがあることを思い出してください。*ing イベントの場合は、BeforeProperties と AfterProperties を操作する必要があります。

これが役立つことを願っています!

于 2010-10-14T16:08:18.437 に答える