2013-07-18 42 views
0

模型從產品數據庫列表中選擇其類別。在希望顯示CheckBoxList的表單上有一個類別列表,另一個表單包含這個(或多個)類別中的項目列表。在選擇要更新的產品的類別列表之後立即。這如何實現?兩個CheckBoxList

在此先感謝。

+0

我用Kendo UI控件完成KendoListView。對你更可取嗎? –

回答

0

我在處理複選框時通常使用下面的方法檢查它是否有幫助。

型號:

namespace GateApplication.Models 
{ 
    public class Gate 
    { 
     public string PreprationRequired { get; set; } 
     public List<CheckBoxes> lstPreprationRequired{ get; set; } 
     public string[] CategoryIds { get; set; } 
    } 

    public class CheckBoxes 
    { 
     public int ID { get; set; } 
     public string Value { get; set; } 
     public string Text { get; set; } 
     public bool Checked { get; set; } 
    } 
} 

控制器:

負載複選框值:

public ActionResult Create() 
    { 
     List<CheckBoxes> lstchk = new List<CheckBoxes>() 
      { 
       new CheckBoxes {Text="coduit", Value="coduit" }, 
       new CheckBoxes {Text="safety", Value="safety" }, 
       new CheckBoxes {Text="power", Value="power" }, 
       new CheckBoxes {Text="access", Value="access" } 

      }; 

      var model = new Gate 
      { 
       lstPreprationRequired=lstchk 
      }; 

      return View(model); 
    } 

查看:

@foreach (var item in Model.lstPreprationRequired) 
    { 
     <input type="checkbox" id="@item.Value" name="CategoryIds" value="@item.Text"/> 
        <label for="optionId">@item.Text</label> 
     <br /> 
    } 

現在您的視圖中有複選框列表。現在將CheckBox值保存到數據庫中。

[HttpPost] 
    public ActionResult Create(Gate ViewModel,FormCollection collection) 
    { 
     try 
     { 

      Gate gate = new Gate(); 

      if (ModelState.IsValid) 
      { 
       gate.PreprationRequired = Request.Form["CategoryIds"];// here you'll get a string containing a list of checked values of the checkbox list separated by commas 

       if (string.IsNullOrEmpty(gate.PreprationRequired))//this is used when no checkbox is checked 
        gate.PreprationRequired = "None,None"; 

       Save();//Save to database 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       return View(); 
      } 

     } 
     catch 
     { 
      return View(); 
     } 
    } 

現在你有以下類型的字符串的數據庫中的

安全,通電,通路

現在獲取所選值並顯示視圖。

public ActionResult Edit(int id) 
     { 
      List<CheckBoxes> lstchk = new List<CheckBoxes>() 
      { 
       new CheckBoxes {Text="coduit", Value="coduit" }, 
       new CheckBoxes {Text="safety", Value="safety" }, 
       new CheckBoxes {Text="power", Value="power" }, 
       new CheckBoxes {Text="access", Value="access" } 
      }; 

      var model = new Gate 
      { 
       lstPreprationRequired =lstchk, 
       CategoryIds = "safety,power,access".Split(',')//here get your comma separated list from database and assign it to the CategoryIds string array, i have used sample text for the values 


      }; 

      return View(model); 
     } 

查看:

@foreach (var item in Model.lstPreprationRequired) 
     { 
      <input type="checkbox" id="@item.Value" name="CategoryIds" [email protected]" 
      @foreach (var c in Model.CategoryIds) 
      { 
       if(c == item.Value) 
       { 
        <text> checked="checked"</text> 
       } 
      } 
      <label for="optionId">@item.Text></label> 
     } 

讓我知道這並不能幫助你。

+0

我有一個窗體上有兩個CheckBoxList。當您在第一個CheckBoxList(類別)中選擇一個項目時,應該更改第二個CheckBoxList。 – Ateist