清除异常中的选择器字段

时间:2018-01-23 20:46:48

标签: acumatica

目前,Selector在异常上显示一些值并显示红色错误消息,但我想清除该字段并显示红色错误消息.Below是我编写的代码行。

testdata = [{
    "id": "58",
    "country_code": "UK",
    "title": "",
    "pubdate": "",
    "url": "",
    "tur": true
}, {
    "id": "59",
    "country_code": "UK",
    "title": "",
    "pubdate": "",
    "url": "",
    "tur": false
}];

$('#test').dataTable({
    "aaData": testdata,
        "aoColumns": [{
        "mDataProp": "id"
    }, {
        "mDataProp": "country_code"         
    }, {
        "mDataProp": "title",
        "render": function (mDataProp, type, row,meta){
            var giris = '';

            giris = '<input class="input1" type="text" ></input>';
            return giris;

          }
    }, {
        "mDataProp": "pubdate",
        "render": function (mDataProp, type, row,meta){
            var giris = '';

            giris = '<input class="input2" type="text" ></input>';
            return giris;

          }
    }, {
        "mDataProp": "url",
        "render": function (mDataProp, type, row,meta){
            var giris = '';

            giris = '<input class="input3" type="text" ></input>';
            return giris;

          }
    },{
        "mDataProp": "tur",
        "render": function (mDataProp, type, row, meta) {
                var result = '';
                  //result = '<span class="center-block padding-5 label label-success">' + metin + '</span>';                  
                  result='<button type="button" class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> EKLE</button>'                

                  if(row.tur){ 
                    $('.input1').show();
                    $('.input2').hide();
                    $('.input3').hide();                    
                    console.log("true "+ row.id);
                  } 
                  else if(!row.tur){
                    $('.input2').show();
                    $('.input3').show();      
                    $('.input1').hide();   
                    console.log("false " + row.id);    
                  }
                  return result;

            }
    }]
});

2 个答案:

答案 0 :(得分:0)

在不知道你在哪个事件的情况下我可以猜测你正在进行现场验证。您可以将e.NewValue =设置为旧值,也可以在异常之前设置为null。旧值将在e.Row中,其中e为PXFieldVerifyingEventArgs

编辑:使用字段已更新事件为时已晚,因为该值已提交到缓存。如果值不正确,您应该使用字段验证或字段更新来取消值。字段验证听起来像你应该用来检查输入的值。

以下是使用图表扩展中的字段验证将输入的值重置为上一个值的示例,或者只是将示例更改为始终使输入的值为空...

public virtual void CRCase_CaseClassID_FieldVerifying(PXCache cache, PXFieldVerifyingEventArgs e, PXFieldVerifying del)
{
    del?.Invoke(cache, e);

    //Check for some condition...

    e.NewValue = ((CRCase) e.Row).CaseClassID; /* Reset to previous value, otherwise set to null to clear entered value  */
    throw new PXSetPropertyException<CRCase.caseClassID>("Incorrect Case Class for Contract");
}

答案 1 :(得分:0)

虽然与PXSetPropertyException无关,但我使用&#39; null&#39;分享这种清除错误和警告的方式。因为它可能对其他寻找清除错误和警告符号有用:

PXUIFieldAttribute.SetWarning<DAC.Field>(cache, dacRecord, null);
PXUIFieldAttribute.SetError<DAC.Field>(cache, dacRecord, null);

也许你可以通过以下方式获得类似的结果:

PXUIFieldAttribute.SetWarning<DAC.Field>(cache, null, null);
PXUIFieldAttribute.SetError<DAC.Field>(cache, null, null);

修改 检查是否使用该模式而不是PXSetPropertyException可以帮助

protected virtual void DAC_FIELD_FieldUpdated(PXCache sender, PXFieldUpdatedEventArgs e)
{
   DAC dacRecord = e.Row as DAC;

   if (dacRecord != null)
   {
      bool isError = true;

      if (isError)
      {
         dacRecord.Field = null; 
      }

      PXUIFieldAttribute.SetError<DAC.field>(sender, 
                                             dacRecord, 
                                             isError ? "Error Message" : null);
   }
}