2013-03-20 35 views
1

场我有使用javascript一点经验,我想选择多个实体,并从真正的字段更改为假,反之亦然。 我试图在SDK上看到JS的例子,但没有发现我能理解的东西,有人可以帮我做个例子吗?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

嗨,你想在一个实体或不同的实体更改记录的值? – 2013-03-20 12:53:10

+0

在相同的权利,但不同的记录 – 2013-03-20 16:05:43

+0

看到我的更新与另一个选项。 – 2013-03-20 16:31:12

回答

1

对于变化倍数纪录为同一实体或一个以上的实体,最好的办法是使用工作流程或插件。但是我对Workflow的投票很容易做出这种类型的更改。检查here的一个例子。

编辑:基于您的更新,我建议另一种选择:

<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等? – 2013-03-22 17:24:54

+0

嗨,看到这个[文章](http://www.mscrmconsultant.com/2012/07/create-update-delete-record-using.html)显示如何用Soap更新记录。 – 2013-03-22 17:38:14

1

有在Dynamics CRM中看到数据的两种方式,网格视图(在那里你看到许多情况下一次)和实体表单视图(你当前打开的窗口或选项卡中显示的数据一个实例)。使用javascript改变数据,表单视图的外观和其他动作很容易完成,但是听起来好像你在查看网格视图,因为你提到了多个选择。

我不认为你应该做的JavaScript,而是看的对话和工作流程。工作流程是在后台运行而不需要任何用户输入的异步操作。它可以开箱即用,并且可以添加自定义的.NET代码来改变行为。对话框类似,但收集用户信息作为其操作的输入(如果用户需要做出选择或输入随时间变化的内容,则可用)。

您可以通过选择一个或多个行,然后点击按钮的工作流程手动运行工作流程。类似的对话过程。

更多信息:Processes, Workflows, and Dialogs for Microsoft Dynamics CRM

+0

嗨亨利克,我可以做到这一点与工作流的资源,我想要做的是通过网格中的JavaScript不需要从该entatie中选择任何记录,然后按下按钮,它会更改特定字段的内容 – 2013-03-20 16:05:06

0

好吧,我解决我的问题如下,因为我不能把自己限制在了50条记录,该页面在视图中使用SelectedControlSelectedAllItemIds给出,因为XML只取回50总的GUID 。 所以现在按钮调用ASP页面的JavaScript网址,这是在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;