1

私は JavaScript の経験がほとんどなく、複数のエンティティを選択して、フィールドを true から false に、またはその逆に変更しようとしています。SDK で JS の例を見ようとしましたが、理解できるものは何も見つかりませんでした。誰かが例を手伝ってくれますか?

更新:説明できなかったと思います。ここでは、ビューにいるときに、すべてのレコードの特定のフィールドを変更するボタンが必要です。レコードを選択する必要はありません。リボン ワークベンチを使用してワークフローを実行できます。

これまでのところ、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

Dynamics CRMでデータを表示するには、グリッドビュー(一度に多くのインスタンスを表示する)とエンティティフォームビュー(現在開いているウィンドウまたはタブに1つのインスタンスのデータを表示する)の2つの方法があります。javascriptを使用してフォームビューのデータ、外観、その他のアクションを変更するのは簡単ですが、複数の選択について言及しているため、グリッドビューを見ているように聞こえます。

私はあなたがjavascriptをするべきではないと思いますが、代わりにダイアログとワークフローを見てください。ワークフローは、ユーザー入力なしでバックグラウンドで実行される非同期操作です。箱から出してすぐに多くのことができ、カスタム.NETコードを追加して動作を変更することもできます。ダイアログは似ていますが、アクションへの入力としてユーザー情報を収集します(ユーザーが選択を行う必要がある場合、または時間の経過とともに変化するものを入力する必要がある場合に便利です)。

1つ以上の行を選択し、ワークフローボタンをクリックすると、ワークフローを手動で実行できます。ダイアログの同様のプロセス。

詳細:Microsoft Dynamics CRMのプロセス、ワークフロー、およびダイアログ

于 2013-03-20T13:19:35.307 に答える
1

同じエンティティまたは複数のエンティティの複数のレコードを変更するには、ワークフローまたはプラグインを使用するのが最善の方法です。しかし、私の投票は、この種の変更を行うのは非常に簡単なワークフローです。ここで例を確認してください。

編集:更新に基づいて、別のオプションを提案します:

<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 に答える
0

SelectedControlSelectedAllItemIdsxml は合計で 50 個の GUID しかフェッチしないため、ページがビューで提供する 50 個のレコードに制限できなかったため、次のように問題を解決しました 。これで、ボタンは 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 に答える