0

我正在尝试在列中显示以下 javascript 函数的结果,使用渲染器属性来引用该函数但是我没有看到结果......不确定我错过了什么。尝试同时使用列渲染器属性和记录字段转换属性

该函数的目的是屏蔽限制代码列中的值,例如 1234 变为 12**

这是片段。提前感谢您的任何想法。

<script type="text/javascript">
 var start = function RenderRC(value) {

         if (value.toString.length > 2) {
        var value = value.substr(0, 2) + Array(value.length - 2 + 1).join("*");
        return value;
    } 
};
</script>


     <Fields>
     <ext:RecordField Name="RestrictionCode" />
    </Fields>

    <ext:Column Header="<%$ Resources:Text,RestrictionCode %>"       DataIndex="RestrictionCode" Fixed="true" Width="200" align="Center">                                                    
    <Renderer Fn="start" />
    </ext:Column>

     <LoadMask ShowMask="true" Msg="<%$ Resources:Text, RetrievingUsers %>" />
4

2 回答 2

2

尝试

txtRestrictionCodeID.toString();

您没有调用该函数,因此分配给Rcode的是函数而不是函数的结果。

于 2012-01-23T21:22:04.850 回答
1

@Esailija 提供的答案是正确的,您只需要调用.toString()而不是.toString.

我想指出另一个[安全性?] 问题,您可能会用您的技术忽略。您正在尝试格式化一个值 [ RestrictionCode] 以从您的用户中混淆它,但该值仍然在未混淆的客户端可用,只是不可见。

通过在 Firebug 等浏览器工具中运行一点 JavaScript,用户可以在其浏览器中检索任何(和所有)这些数据存储值并以纯文本形式查看它们。

最好在RestrictionCode服务器端格式化值,并且永远不要将未格式化的值发送到客户端。

如果您仍然需要客户端的值,为了传递回服务器端......首先在发送给客户端之前加密服务器端的值,然后在两者之间来回传递加密的值客户端/服务器。服务器可以解密该值,而客户端只看到一些加密的字符串值,它们不能(不应该)解密。

希望这可以帮助。

于 2012-01-24T22:03:58.153 回答