2013-11-04 52 views
0

我是MVC 4的新手。我陷入困境並希望得到一些建議來解決問題。該問題的方案是:在MVC中保存WebGrid中的所有複選框值4

我渲染的WebGrid的局部視圖內外的WebGrid格式如下: enter image description here

IEnumerable集合與約束的WebGrid。用於結合的WebGrid的觀點是:

@{  
MIS.Areas.AdminModule.Models.AdminModuleViewModels.Module_UserGrp_Permission allPermissions = new MIS.Areas.AdminModule.Models.AdminModuleViewModels.Module_UserGrp_Permission();  

}

@{ 
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 10, selectionFieldName: "selectedRow", ajaxUpdateContainerId: "Title"); 
grid.Pager(WebGridPagerModes.NextPrevious);} 
    <div id="gridContent"> 
     @grid.GetHtml(tableStyle: "webGrid", 
      headerStyle: "header", 
      alternatingRowStyle: "alt", 
      selectedRowStyle: "select", 
      columns: grid.Columns(
      grid.Column(header: "Select", 
      format: @<input class="select" id="assignChkBx" name="assignChkBx" type="checkbox" @allPermissions.intMenuId/>), 
      grid.Column(header: "MenuId", format: (item) => item.intMenuId, style: "description"), 
      grid.Column(header: "Menu", format: (item) => item.strMenuName, style: "description", canSort: true), 
      grid.Column(header: "Add", format: @<text><input name="Add" type="checkbox" @(item.boolAddPer == true ? "Checked" : null) id="chkboxIsActiveAdd" /></text>), 
      grid.Column(header: "Edit", format: @<text><input name="Edit" type="checkbox" @(item.boolEditPer == true ? "Checked" : null) id="chkboxIsActiveEdit" /></text>), 
      grid.Column(header: "Delete", format: @<text><input name="Delete" type="checkbox" @(item.boolDeletePer == true ? "Checked" : null) id="chkboxIsActiveDelete" /></text>), 
      grid.Column(header: "Grant", format: @<text><input name="Grant" type="checkbox" @(item.boolGrantPer == true ? "Checked" : null) id="chkboxIsActiveGrant" /></text>) 

    ))      
    </div> 

而從數據庫中獲取數據如下(我不使用的EntityFramework):

VAR結果=從塔中dt.AsEnumerable ()

     select new Module_UserGrp_Permission 
        { 
         intMenuId = Convert.ToInt32(column["MenuId"]), 
         intUserGrpId = Convert.ToInt32(column["UserGrpId"]), 
         strMenuName = Convert.ToString(column["MenuName"]), 

         boolAddPer = Convert.ToBoolean(column["boolGAdd"]), 
         boolEditPer = Convert.ToBoolean(column["boolGEdit"]), 
         boolDeletePer = Convert.ToBoolean(column["boolGDel"]), 
         boolViewPer = Convert.ToBoolean(column["boolGView"]), 
         boolGrantPer = Convert.ToBoolean(column["boolGGrant"]) 
        }; 
     return new List<MIS.Areas.AdminModule.Models.AdminModuleViewModels.Module_UserGrp_Permission>(result); 

現在的問題是我要拯救這一切的選中/取消項目的WebGrid。 單擊「保存」按鈕後應如何保存所有值。 請建議可能的解決方案。

謝謝大家。

回答

0

由於所有的複選框具有相同的名稱,你可以做一個

string result = Request.Form["assignChkBx"].ToString(); 
控制器上

,這將給你所有選中的複選框的列表。希望這有助於。

+0

謝謝您的回覆,先生。我一定會試一試。但是你知道我必須從所有的Add-Edit-Delete-Grant列中取得所有的選中/取消選中的值(第一選擇複選框不重要,因爲我必須取所有的值)。還編輯了複選框名稱。我會盡快給您回覆。謝謝.. – BAdmin

+0

先生,按照你的建議,我可以得到檢查項目的'開'格式的值。但問題是價值觀不是明智之舉,更重要的是我無法得到未經檢查的價值觀。那麼,我將如何更新所有的值? – BAdmin

+0

這是最簡單的方法。如果您爲每個列指定自己的名稱,則可以通過對每個名稱執行請求來獲取檢查內容的列表。由於在一行上有多個我只是查詢獲得可用的列表,並與選中的內容進行比較以獲得未選中的 –