1

我对 javascript 的经验很少,我正在尝试选择多个实体并将字段从 true 更改为 false,反之亦然。我试图在 SDK 上查看 JS 的示例,但没有发现我能理解的内容,有人可以帮我举个例子吗?

更新:我想我无法解释。因此,当我在视图中时,我需要一个按钮来更改所有记录中的特定字段,而无需选择记录,我可以使用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 中的每条记录执行相同的操作

4

3 回答 3

1

要更改同一实体或多个实体的多条记录,最好的方法是使用工作流或插件。但我对 Workflow 的投票很容易做出这种类型的更改。在这里查看一个例子。

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

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

您必须添加功能区按钮并添加操作。

于 2013-03-20T12:56:43.583 回答
1

在 Dynamics CRM 中有两种查看数据的方式,网格视图(您可以同时查看多个实例)和实体表单视图(您可以在当前打开的窗口或选项卡中查看一个实例的数据)。使用 javascript 更改表单视图上的数据、外观和其他操作很容易,但听起来您正在查看网格视图,因为您提到了多项选择。

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

您可以通过选择一行或多行并单击工作流按钮来手动运行工作流。对话的类似过程。

详细信息:Microsoft Dynamics CRM 的流程、工作流和对话框

于 2013-03-20T13:19:35.307 回答
0

好的,我按如下方式解决了我的问题,因为我无法通过使用将自己限制在页面在视图中提供的 50 条记录 SelectedControlSelectedAllItemIds,因为 xml 总共只获取 50 个 guid。所以现在按钮调用 ASP 页面的 JAVASCRIPT URL,这是 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;
于 2013-03-27T11:51:02.320 回答