2010-08-25 21 views
2

我有一個有點複雜的問題。Struts jquery插件:帶參數的遠程對話框

我有定義的網格上(使用Struts2的-JQuery的網格插件)。其中一列有一個自定義格式化程序,它調用一個JavaScript函數將按鈕放入該列。 (注:我絕對恨這樣做)。

該按鈕的目的是打開一個對話框。該對話框包含一個複選框列表,該列表不能在網格中呈現。

不知怎的,我需要一個參數傳遞給返回將在對話框中顯示的視圖的動作。

由於這是有點複雜,這裏是代碼:

電網定義:

<sjg:grid gridModel="gridModel" 
      id="gridTable" 
      caption="Manage Users" 
      dataType="json" 
      href="%{remoteUrl}" 
      pager="true" 
      rowList="10,15,20" 
      rowNum="15" 
      rownumbers="true" 
      cellEdit="true" 
      cellurl="%{editCell}" 
     /> 
    <sjg:gridColumn name="id" 
        hidden="false" 
        title="id" 
        formatter="integer" 
        index="id" 
        key="true" 
    /> 
    <!-- Other columns ommitted --> 
    <sjg:gridColumn name="manageRoles" 
        title="Manage Roles" 
        sortable="false" 
        align="center" 
        formatter="formatRoles" 
      /> 
</sjg:grid> 

的Javascript自定義格式化:

function formatRoles(cellValue, options, rowObject) { 
     return "<button onClick='openRoleDialog(" + rowObject.id + ")'>Edit Roles</button>"; 
    } 

對話框定義:

<s:url id="manageRoleUrl" action="viewRoles" namespace="userManagement" /> 
<sj:dialog id="manageRoles" title="Manage Roles" autoOpen="false" modal="true" href="%{manageRoleUrl}" resizable="true"/> 

遠程管理角色JSP(修整):

<s:form id="roleChoiceForm" action="/userManagement/editUserRole"> 
     <s:hidden id="id" name="id" /> 
     <s:checkboxlist list="roleChoices" name="selectedNameChoices" /> 
    </s:form> 

因爲我通過javascript獲得網格對象的ID,但使用JSP標籤庫的對話框,我怎樣才能通過ID身邊?

回答

0

您需要傳遞'cellvalue'。 您的管理角色列應具有與具有該行唯一標識的相同的'name'屬性。 可能是'id'在你的情況下。

0

步驟1:在「選擇」事件一個JavaScript填充的表單字段,並打開對話

<sjg:grid gridModel="gridModel" 
onSelectRowTopics="rowselectEvent" 

$.subscribe('rowselectEvent', function(event,data) { 
    id = event.originalEvent.id; 
    $("#idSelected").val(id); 
    $("#manageRoles").dialog("open"); 
}); 

<s:form id="idSelectedForm"> 
    <s:hidden id="idSelected" name="idSelected" value="unset"></s:hidden> 
</s:form> 

步驟2:將「formIds」的SJ的屬性:對話框標記用於提交表單數據

<sj:dialog id="manageRoles" formIds="idSelectedForm"