如何仅为编辑网格窗口列设置只读属性?

时间:2013-03-25 13:36:46

标签: jqgrid struts2

我正在使用 struts2 hibernate 进行我的项目,我使用 jqgrid 进行数据显示。现在我想在editGrid窗口中为id字段设置 readonly 属性。但不适用于添加窗口。我的示例代码

<sjg:grid id="gridtable"
    caption="Customer List"
    dataType="json"
    href="%{remoteurl}"
    pager="true"
    gridModel="customerList"
    rowNum="10"
    autowidth="true"
    editurl="%{editurl}"
    editinline="false"
    navigator="true"
    navigatorAdd="true"
    navigatorAddOptions="
        {
            viewPagerButtons:false,
            recreateForm:true,
            checkOnUpdate:true,
            closeAfterAdd:true
        }"
    navigatorDelete="true"
    navigatorEdit="true"
    navigatorRefresh="true"
    navigatorSearch="true"
    navigatorEditOptions="
        {
            viewPagerButtons:false,
            recreateForm:true,
            checkOnUpdate:true,
            closeAfterEdit:true
        }"
    navigatorDeleteOptions="{ checkOnUpdate:true}"
    navigatorViewOptions="
        {
            viewPagerButtons:false,
            recreateForm: true,
            checkOnUpdate: true
        }"
    navigatorSearchOptions="{sopt:['eq','ne','lt','gt','in','ni','cn','nc']}"
    navigatorView="true"
    rownumbers="true"
    rowList="10,20,30"
    viewrecords="true"
>
<sjg:gridColumn
    name="id"
    align="left"
    key="true"
    index="id"
    title="Customer id"
    sortable="false"
    editable="true"
    editrules="{
        number: true,
        required: true
    }"
    edittype="text" />
<sjg:gridColumn
    name="custName"
    align="left"
    index="custName"
    title="Customer Name"
    sortable="false"
    editable="true"
    edittype="text" />
    ......
</sjg:grid>

我可以在 navigatorEditOption 中调用beforeShowFormafterShowForm个函数吗?

1 个答案:

答案 0 :(得分:0)

我不是struts2 defeloper,所以我建议可能不正确。不过,您可以尝试直接在 navigatorEditOption 中包含内联JavaScript代码:

navigatorViewOptions="
                {
                    viewPagerButtons:false,
                    recreateForm: true,
                    checkOnUpdate: true,
                    beforeShowForm: function ($form) {
                        alert("inside of beforeShowForm function");
                    }
                }"

它看起来接近the page文档中的代码。我希望它能奏效。

或者,您可以定义一些全局功能,例如

<script type="text/javascript">
    var myBeforeShowForm = function ($form) {
            alert("inside of beforeShowForm function");
        };
</script>

并在 navigatorEditOption 中使用全局myBeforeShowForm

navigatorViewOptions="
                {
                    viewPagerButtons:false,
                    recreateForm: true,
                    checkOnUpdate: true,
                    beforeShowForm: myBeforeShowForm
                }"

(与the page上的datePick函数的代码进行比较)