2013-05-16 32 views
8

Tôi hiện đang sử dụng InvalidPluginExecutionException để gửi tin nhắn cho người dùng, nhưng hóa ra là thông báo bằng tiếng Anh "Business Process Error" ngoài đó hộp lỗi xuất hiện nút "download log file". Đây không phải là lỗi vì người dùng đang cố sao chép bản ghi, như có thể thấy trong mã. Có cách nào khác mà không phải sử dụng InvalidPluginExecutionException để hiển thị cảnh báo không?Làm thế nào để gửi cảnh báo cho người dùng thông qua plugin mà không sử dụng InvalidPluginExecutionException?

QueryExpression query1 = new QueryExpression(); 
query1.ColumnSet = new ColumnSet(true); 
query1.EntityName = "new_appraisers"; 

EntityCollection ec = service.RetrieveMultiple(query1); 

if (ec.Entities.Count <= 0) 
{ 
    log.Tb_Log_Create("Appraiser created"); 
} 
else 
{ 
    foreach (Entity app in ec.Entities) 
    { 
     if (app["fcg_appraiser"].ToString() == name) 
     { 
      log.Tb_Log_Create("appraiser allready exist"); 

      throw new InvalidPluginExecutionException("The name allready exists"); 
     } 

     if (app["new_login"].ToString() == login) 
     { 
      log.Tb_Log_Create("appraiser allready exist"); 

      throw new InvalidPluginExecutionException("The login allready exists."); 
     } 
    } 
} 

Trả lời

8

Phương pháp duy nhất để hiển thị hộp thư cho người dùng từ plugin đang sử dụng ngoại lệ từ giai đoạn xác thực. Tuy nhiên, bạn có thể sử dụng javascript, thực hiện một truy vấn OData đơn giản trên sự kiện On_Save của biểu mẫu và hiển thị một hộp cảnh báo với bất kỳ thông tin nào bạn muốn và hủy bỏ việc lưu biểu mẫu.

Điều này sẽ cho phép bạn hiển thị bất kỳ thông báo tùy chỉnh nào bạn muốn và giữ cho plugin không kích hoạt và hiển thị hộp thoại tệp tải xuống.

1

Tôi có thể hơi muộn, tuy nhiên, trong các phiên bản CRM mới hơn, có một vài khả năng để đạt được những gì bạn muốn. Những người tốt hơn beeing:

  1. Rules Kinh doanh
  2. Validation sử dụng JS và thông báo cho người dùng sử dụng

Tôi hy vọng Microsoft không đọc cái này nhưng ...

Bạn cũng có thể sử dụng Plugin đồng bộ và hài lòng với hộp thoại Quy trình nghiệp vụ bật ra. Tôi chỉ phát hiện ra rằng Hộp thoại này có thể tấn công ở một mức độ nào đó. Chỉ cần trả lại HTML trong Thông báo ngoại lệ như vậy:

throw new InvalidPluginExecutionException(
@"<img height='16px' src='http://emojione.com/wp-content/uploads/assets/emojis/1f644.svg'> <strong>Oh snap!</strong> 

It seems the record can not be saved in its current state.  

"); 

Kết quả nào trong sth. như thế này:

enter image description here

+1

Không ai trong số này có sẵn trong CRM 2011 (có lẽ là công trình HTML hacky, mặc dù) – Alex

+0

Ừ, đúng rồi. Điểm tốt. – nozzleman

+0

Tôi thích html smylie hack –