Невозможно получить атрибут денег, используя REST javascript - PullRequest
0 голосов
/ 09 декабря 2011

Я настраиваю образец REST, расположенный здесь для моей пользовательской сущности http://msdn.microsoft.com/en-us/library/hh223541.aspx

. Он извлекает и отображает таблицу для всех атрибутов, кроме денег.То есть, если мои запрошенные атрибуты не содержат атрибут типа money, который отображается в таблице.Как только я добавляю атрибут денег, ничего не отображается.Ниже мой пользовательский HTML.Я использую тот же SDK.OptionSetSample.js, который включен в пример против решения.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=9" />
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Contacts Page</title>
    <script src="../../ClientGlobalContext.js.aspx" type="text/javascript"></script>
    <script src="Scripts/json2.js" type="text/javascript"></script>
    <script src="Scripts/SDK.OptionSetSample.js" type="text/javascript"></script>
    <script src="Scripts/SDK.MetaData.js" type="text/javascript"></script>
    <script src="Scripts/SDK.REST.js" type="text/javascript"></script>
    <link href="Styles/OptionSetSample.css" rel="stylesheet" type="text/css" />
    <script type="text/javascript">

        var attributes = [
        "new_revenuesportspartnershipsId",
   "new_name",
   "new_PledgeorCash",
   "new_Designation",
   "new_DonorStatus"
   , "new_FY2011"
];

        var ContactListTableData = {
            Id: "ContactList",
            BodyId: "ContactListBody",
            CheckboxColumn: true,
            SearchFieldId: "SearchString",
            CreateButtonId: "createContact",
            DeleteButtonId: "deleteSelectedRecords",
            Columns: [
  { Name: "new_name" },
  { Name: "new_PledgeorCash" },
  { Name: "new_Designation" },
    { Name: "new_DonorStatus" }
    ,{ Name: "new_FY2011" }
  ]
        };

        var CurrentContactForm = {
            Id: "CurrentContact",
            SaveButtonId: "SaveCurrentContact",
            CloseFormControlId: "closeFormSpan"
        };



        window.onload = function () {
            SDK.OptionSetSample.Entity = "new_revenuesportspartnerships";
            SDK.OptionSetSample.Columnset = attributes;
            SDK.OptionSetSample.PrimaryIdAttribute = "new_revenuesportspartnershipsId";
            SDK.OptionSetSample.TextSearchAttribute = "new_name";
            SDK.OptionSetSample.PrimaryAttribute = "new_name";
            SDK.OptionSetSample.TableData = ContactListTableData,
            SDK.OptionSetSample.FormData = CurrentContactForm;


            //Get the Attribute metadata
            SDK.OptionSetSample.getAttributeMetadataCollection.Execute();

        }

    </script>
</head>
<body>
    <ul id="message">
    </ul>
    <div>
        <button id="createContact">
            Create</button>
        <button id="deleteSelectedRecords" disabled="disabled">
            Delete Selected Contacts</button>
        <span id="searchBy">Search by Full Name :</span><input id="SearchString" type="text" />
        <table id="ContactList" class="RecordList" />
    </div>
    <div id="CurrentContact" class="editForm">
        <span id="closeFormSpan" class="closeFormSpan">X</span>
        <!--  Only Boolean, Picklist, Status, and String attribute types are supported in this sample.-->
        <div id="new_nameField">
        </div>
        <div id="new_PledgeorCashField">
        </div>
        <button id="SaveCurrentContact" disabled="disabled">
            Save</button>
    </div>
</body>
</html>

1 Ответ

2 голосов
/ 09 декабря 2011

Пример сценария для Money выглядит следующим образом:

case "Money":
case "Integer":
 var Value = record[AttributeMetadata.SchemaName];
 record[AttributeMetadata.SchemaName] = {};
 record[AttributeMetadata.SchemaName].Value = Value;
 record[AttributeMetadata.SchemaName].isDirty = false;

В двух описанных случаях Integer будет нормально работать, так как это примитивный тип, и поэтому вернет фактическое числовое значение в record[AttributeMetadata.SchemaName].Value

Однако тип денег является сложным объектом, поэтому он присваивается той же переменной, но фактически не дает значения, которое он представляет, только объект, поэтому он не отображается. На самом деле вам нужно еще .value в конце, чтобы получить числовое значение, которое оно представляет.

Либо измените переключатель на этот:

case "Integer":
 var Value = record[AttributeMetadata.SchemaName];
 record[AttributeMetadata.SchemaName] = {};
 record[AttributeMetadata.SchemaName].Value = Value;
 record[AttributeMetadata.SchemaName].isDirty = false;
case "Money":
 var Value = record[AttributeMetadata.SchemaName];
 record[AttributeMetadata.SchemaName] = {};
 record[AttributeMetadata.SchemaName].Value = Value.value;
 record[AttributeMetadata.SchemaName].isDirty = false;

или когда вы добавляете атрибут money в вашу таблицу, убедитесь, что показанное значение равно record[AttributeMetadata.SchemaName].Value.value

Я думаю, что нижний регистр для value это может быть верхний Value

Надеюсь, что это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...