2013-03-20 3 views
1

У меня мало опыта работы с javascript, и я пытаюсь выбрать несколько объектов и изменить поле с true на false и наоборот. Я попытался увидеть пример JS на SDK, но не нашел ничего, что мог бы понять, кто-то может помочь мне с примером?CRM 2011 - кнопка Javascript - изменение поля на всех записях Entitie

Обновление: Не думаю, что я мог бы объяснить. Итак, здесь, когда я нахожусь в представлении, мне нужна кнопка для изменения определенного поля во всех записях, без необходимости выбирать запись, которую я могу сделать с помощью рабочего процесса, используя Ribbon Workbench.

До сих пор я могу изменить с помощью XRM значение, но только если у меня открыта форма этой записи.

function test() 
{ 
var id = Xrm.Page.data.entity.getId(); 
field = Xrm.Page.getAttribute("new_onoff").getValue(); 
Xrm.Page.getAttribute("new_onoff").setValue("offviaJava"); 
alert(id + field); 
} 

Цель состоит в том, чтобы сделать то же самое для каждой записи в VIEW

+0

Привет, Вы хотите изменить значение записей в одном субъекте или для различных субъектов? –

+0

В том же наименовании, но отличные записи –

+0

См. Мое обновление с другим вариантом. –

ответ

1

Для изменения нескольких записей для одной и той же организации или для более чем одного объекта наилучшим способом использует рабочий процесс или плагинов. Но мой голос идет к Workflow очень легко сделать этот тип изменений. Проверьте пример here.

EDIT: На основе в вашем обновлении я предлагаю другой вариант:

<Actions> 
    <JavaScriptFunction Library="$webresource:AccountFormLibrar" FunctionName="CreateNewAccount"> 
    <CrmParameter Value="SelectedControlSelectedItemIds"/></JavaScriptFunction> 
</Actions> 
function CreateNewAccount (SelectedRecordGUID) { 
//the parameter will receive all GUIDS in comma separated 
} 

Вы должны добавить кнопку ленты и добавить действие.

+0

Thnaks Pedro, теперь я могу иметь все подсказки, но как сделать обновление записей с использованием только javascript, без xml, soap и т. Д.? –

+0

Привет, см. Эту статью (http://www.mscrmconsultant.com/2012/07/create-update-delete-record-using.html), которые показывают, как обновить запись с помощью мыла. –

1

Существует два способа просмотра данных в Dynamics CRM, вид сетки (где вы видите много экземпляров одновременно) и представление формы сущности (где вы видите данные для одного экземпляра в текущем открытом окне или вкладке). Использование javascript для изменения данных, внешнего вида и других действий в виде формы легко выполняется, однако похоже, что вы смотрите на сетку, поскольку вы указываете несколько вариантов.

Я не думаю, что вы должны делать javascript, но вместо этого смотрите на диалоги и рабочие процессы. Рабочий процесс - это асинхронная операция, выполняемая в фоновом режиме без ввода пользователем. Он может сделать много из коробки, и вы можете добавить собственный .NET-код, чтобы изменить поведение. Диалоги похожи, но собирают информацию пользователя в качестве вклада в ее действия (полезно, если пользователю необходимо сделать выбор или ввести что-то, что меняется с течением времени).

Вы можете запустить рабочий процесс вручную, выбрав одну или несколько строк и нажав кнопку рабочего процесса. Подобный процесс для диалога.

Подробнее: Processes, Workflows, and Dialogs for Microsoft Dynamics CRM

+0

Привет, Henrik, я могу сделать это с помощью ресурса рабочего процесса, что я пытаюсь сделать, это через javascript в GRID, не нужно выбирать любую запись из этого entatie и нажимать кнопку, и это изменяет содержимое определенного поля –

0

Ok я решил мою проблему следующим образом, так как я не мог ограничить себя 50 записей, что страница дает в представлении с помощью SelectedControlSelectedAllItemIds, потому что XML принести только 50 GUIDs на общее , Так что теперь кнопка вызывает URL JAVASCRIPT страницы ASP и это был код в C#:

EntityCollection retrieved = GetInformacaoDB(new_teste.EntityLogicalName.ToString()); 

        DataSet ds1 = new DataSet(); 

        DataTable dt = new DataTable("List"); 
        dt.Clear(); 
        dt.Columns.Add(new DataColumn("Description", typeof(string))); 

        foreach (var c in retrieved.Entities) 
        {  
          GridView1.Visible = false;        
          DataRow dr = dt.NewRow(); 
          dr["Description"] = c.Attributes["new_testid"]; 

          object _test = c.Attributes["new_testid"]; 

           string testGuid = _test.ToString(); 

           Guid _testId = new Guid(testGuid); 

           Entity EntityName = new EntityName("new_test"); 

           ColumnSet attributes = new ColumnSet(new string[] { "new_testid" }); 

           EntityName = _orgService.Retrieve(EntityName.LogicalName, _testId, attributes); 

           entidade["new_onoff"] = "OffViaWebService"; 

           _orgService.Update(EntityName); 

          dt.Rows.Add(dr); 

        } 
        ds1.Tables.Add(dt); 
        GridView1.DataSource = ds1; 
        GridView1.DataBind(); 
        Cache["Data"] = ds1; 
Смежные вопросы