C#EXT直接方法返回未定义的值

时间:2017-06-14 08:39:17

标签: javascript extjs

我有一个直接的方法,它获取2个参数并返回一个值(字符串)。虽然我可以看到直接方法被调用并且返回值“result”是预期的(alert函数使用正确的值打印它),但HTML中的值是'undefined'

        [DirectMethod]
        public string callFNGetPtidPrfx(int siteid, int ptid)
        {
            DAL.CDataContext dc = new CDataContext();
            return dc.fn_GetPtid(100, siteid, ptid);
        }
Handler="
    this.body.dom.innerHTML = String.format('{0}',(#{QueriesStore1}.getAt(rowIndex).get('PtId') !=null? #{DirectMethods}.callFNGetPtidPrfx(#{QueriesStore1}.getAt(rowIndex).get('SiteId'),#{QueriesStore1}.getAt(rowIndex).get('PtId'),{
                 success: function (result) {
                     alert(result);
                     return result;  
                 }
             }):'-')

修改 Artem Stepin的解决方案奏效了。唯一的事情就是第一次调用它的html格式不正确...请看一下截图

First time its called after first time

以下是我使用的完整代码:

<Show Handler="
            try{
                var rowIndex = #{QueriesGridPanel1}.view.findRowIndex(this.triggerElement);
                var me = this;
                #{DirectMethods}.callFNPtidPrfx(#{QueriesStore1}.getAt(rowIndex).get('SiteId'),#{QueriesStore1}.getAt(rowIndex).get('PtId'),{
                    success: function (result) { 
                        me.body.dom.innerHTML = String.format('{0}<hr />{1} <br /><br /><i>{2} level query<br />Link to:{3}|{4}|{5}|{6}|{7}<br />Created By: {8}, {9}</i> ', 
                        '<i>'+#{QueriesStore1}.getAt(rowIndex).get('CreatedBy') +':</i><b> '+ #{QueriesStore1}.getAt(rowIndex).get('Message')+'</b>', 
                        (#{QueriesStore1}.getAt(rowIndex).get('ResolvedBy') !=null? '<i><u>'+#{QueriesStore1}.getAt(rowIndex).get('ResolvedBy') +'</u>: </i><b>' + #{QueriesStore1}.getAt(rowIndex).get('comment')+'</b>':''), 
                        (#{QueriesStore1}.getAt(rowIndex).get('FieldName')!=null? 'Field': (#{QueriesStore1}.getAt(rowIndex).get('TableName')!=null? 'Form':  (#{QueriesStore1}.getAt(rowIndex).get('VIID') !=null? 'Visit' :(#{QueriesStore1}.getAt(rowIndex).get('PtId') !=null?'Pt':'Site' )))),
                        (#{QueriesStore1}.getAt(rowIndex).get('PtId') !=null? result :'-'), 
                        (#{QueriesStore1}.getAt(rowIndex).get('VIID') !=null? #{QueriesStore1}.getAt(rowIndex).get('VISID') :'-') , 
                        (#{QueriesStore1}.getAt(rowIndex).get('INSTID')!=null? #{QueriesStore1}.getAt(rowIndex).get('INSTID'):'-'), 
                        (#{QueriesStore1}.getAt(rowIndex).get('TableName')!=null? #{QueriesStore1}.getAt(rowIndex).get('TableName').replace('form.',''):'-'), 
                        (#{QueriesStore1}.getAt(rowIndex).get('FieldName')!=null? #{QueriesStore1}.getAt(rowIndex).get('FieldName'):'-'), 
                        #{QueriesStore1}.getAt(rowIndex).get('CreatedBy'),
                        #{QueriesStore1}.getAt(rowIndex).get('QuerySubmitted').toLocaleString());        
            }
                                    });
                if (#{QueriesStore1}.getAt(rowIndex).get('FieldName') !=null && #{QueryDetailsWindow}.hidden)   {
                                updateSpot(#{QueriesStore1}.getAt(rowIndex).get('FieldName').replace('[','').replace(']',''), #{QueriesStore1}.getAt(rowIndex).get('INSTID'));  
                              }

                              } catch(err){};
                              " />

0 个答案:

没有答案