2010-10-11 27 views
7

Tôi đang cố gắng để chỉ cần thêm một văn bản đơn giản hoặc trường siêu liên kết đến một mục danh sách trong SharePoint 2007.thiết lập trình giá trị trường cho SharePoint listitem

tôi có thể thêm lĩnh vực này không có vấn đề:

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

Và nó hiển thị tốt trên các mục danh sách của tôi. Tuy nhiên không có vấn đề gì theo cách tôi cố gắng, tôi không thể lập trình một giá trị cho lĩnh vực này. Tôi cố gắng:

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

và tôi đã cố gắng nạp vào một lĩnh vực:

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

và đặt nó ở đó, và thiết lập các giá trị mặc định và cập nhật, nhưng không gì vậy bao giờ xảy ra.

Tôi luôn hoàn thành các khối mã của mình bằng list.update(); hoặc nếu tôi đang hoạt động trên mục đó item.update(); vì vậy tôi không phải là ít nhất là mất tích đó. Bất cứ ai có thể cho tôi biết những gì tôi đang làm sai?

Cảm ơn

+0

ContentTypes có được bật trong danh sách không? – cement

+0

Không, không. – Dynde

Trả lời

10

Hãy thử:

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

Mặc dù có vẻ như tương đương, các mã trên là không giống nhau như:

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

Để biết thêm thông tin, xem herehere cho những người đã ghi nhận cùng một hành vi.

+1

Tại sao trên trái đất họ sẽ làm hỏng các chỉ mục quá xấu? :/ – Dynde

+0

@Dynde Họ không. Điều này không khác gì nếu kiểu giá trị được trả về và sửa đổi. Nó chỉ là một đối tượng * mới * được trả về. –

3

Bạn có thể thử điều này để thêm trường mới và đặt giá trị mặc định không? Mã chưa được kiểm tra. cho tôi biết làm thế nào nó đi.

SPFieldText fldName = (SPFieldText)list.Fields.CreateNewField(SPFieldType.Text.ToString(), "mycolumn"); 
fldName.DefaultValue = "default"; 
list.Fields.Add(fldName); 
list.Update(); 
+0

Thỏa thuận tương tự - trường được tạo thành công - không có giá trị nào cả ... – Dynde

+0

Lạ !! Kiểm tra mã và nó hoạt động tốt cho tôi. – Shoban

0

Từ tất cả các cuộc thảo luận ở trên có vẻ như bạn đang cố gắng để thiết lập các giá trị trường trong một handler danh sách sự kiện và bạn đang thiết lập các giá trị trong mục thêm hoặc mục cập nhật sự kiện. Nếu đây là trường hợp thì bạn cần phải xem xét AfterProperties. Hãy nhớ rằng chúng tôi có các sự kiện * ing và * ed và trong trường hợp các sự kiện * ing chúng ta cần làm việc với BeforeProperties và AfterProperties.

Tôi hy vọng điều này sẽ hữu ích!

Các vấn đề liên quan