Tôi đang cố gắng cập nhật trường "ModifiedBy" trong bảng thảo luận Sharepoint bằng cách sử dụng Mô hình đối tượng khách hàng. Bằng cách thay đổi trường "Trình chỉnh sửa" và "Tác giả", tôi có thể thay đổi "ModifiedBy" xuất hiện trên chế độ xem danh sách. Tuy nhiên, khi bạn nhấp vào một bài thảo luận, trường "ModifiedBy" xuất hiện ở đó (trường có hình bên trên nó) không phản ánh các thay đổi. Sau khi thử nghiệm, tôi phát hiện ra rằng trường tôi cần thay đổi để sửa lỗi này được gọi là "MyEditor". Thật không may, trường này là chỉ đọc.Sharepoint Client Object Model thiết lập trường ModifiedBy
Trong mã bên dưới, tôi cố gắng thay đổi cài đặt chỉ đọc của trường thành false. Khi tôi nhìn vào trường MyEditor trong trình gỡ rối của Visual Studio sau dòng ExecuteQuery() ở cuối khối đầu tiên, nó cho thấy giá trị ReadOnlyField trên thực tế đã được đặt thành false.
sharepointContext.Load(discussionList);
sharepointContext.ExecuteQuery();
var fields = discussionList.Fields;
sharepointContext.Load(fields);
sharepointContext.ExecuteQuery();
var field = fields.GetByInternalNameOrTitle("MyEditor");
field.ReadOnlyField = false;
field.Update();
sharepointContext.Load(field);
sharepointContext.ExecuteQuery();
Đoạn mã trên không thực hiện được bất kỳ sự cố nào. Vấn đề đi kèm với khối tiếp theo này:
//...Code to initialize discussionItem...
discussionItem["MyEditor"] = 0;
discussionItem["Editor"] = 0;
discussionItem["Author"] = 0;
discussionItem["Body"] = "Testing";
discussionItem["Title"] = "Hello Worlds";
discussionItem.Update();
sharepointContext.Load(discussionItem);
sharepointContext.ExecuteQuery();
Khi mã đạt ExecuteQuery() ở dưới cùng của khối thứ hai, nó ném một ServerException với thông báo sau:
Invalid data has been used to update the list item.
The field you are trying to update may be read only.
Để đảm bảo rằng trường MyEditor là trường gây ra ngoại lệ được ném ra, tôi nhận xét ra dòng mà tôi đặt nó và chạy lại mã. Mọi thứ đều ổn. Tôi không hiểu những gì là sai, ai đó có thể giúp tôi?
Tại sao bạn nghĩ người ta có thể (và tại sao bạn cần phải có cho mục đích bình thường)? Tôi sẽ không mong đợi những loại trường này có thể chỉnh sửa được ... Nếu bạn đang sử dụng tài khoản không phải quản trị viên để làm như vậy và quản lý để thay đổi các trường này, nó giống như một lỗi đối với tôi. –
Tôi tin rằng điều đó có thể xảy ra vì có vẻ hợp lý nếu tôi đặt thuộc tính ReadOnly của một trường thành false, tôi có thể ghi vào đó. Nếu không, mục ReadOnly sẽ phục vụ mục đích gì? Tôi đang di chuyển dữ liệu cho một diễn đàn thảo luận từ một cơ sở dữ liệu khác vào Sharepoint và tôi muốn trường ModifiedBy phản ánh người đã đăng nó lần đầu tiên (ngay bây giờ, nó hiển thị tên của tôi). Tài khoản của tôi có toàn quyền quản trị. –