2017-04-14 58 views
0

我在asp.net web表單中有listview。我想選擇行並在點擊按鈕後更新選定的行。
爲此,我想使用複選框/複選框列表。但我不明白如何將所選行中的行或列的信息發送到Checkbox/CheckboxList項目。
如何選擇行並使用複選框/複選框列表更新它們?
我使用Asp.net Linq實體框架。
我的代碼如何更新ListView中的選定行

<asp:Button ID="ButtonTest" runat ="server" OnClick="ButtonTest_Click" /> 
 
<asp:ListView ID="ListView2" ItemType="DocCat.Models.ReqInf" SelectMethod="GetReqF" OnItemDataBound="ListView2_ItemDataBound" 
 
      DataKeyNames="requestN" EnableViewState="true" runat="server" UpdateMethod="ListView2_UpdateItem" DeleteMethod="ListView2_DeleteItem" InsertMethod="ListView2_InsertItem"> 
 
      <LayoutTemplate> 
 
       <div class="outerContainer" style="overflow: scroll"> 
 
        <table id="docTable"> 
 
         <thead> 
 
          <tr> 
 
           <th> 
 
            Выбрать 
 
           </th> 
 
           <th>First</th> 
 
           <th>Request</th> 
 
           <th>Third</th> 
 
           <th>Four</th> 
 
          </tr> 
 
         </thead> 
 
         <tbody runat="server" id="itemPlaceholder"></tbody> 
 
        </table> 
 
       </div> 
 
       
 
      </LayoutTemplate> 
 

 
      <ItemTemplate> 
 
       <tr> 
 
        <td> <asp:CheckBoxList runat="server" ID="CheckNew" ><asp:ListItem>Выбрать</asp:ListItem></asp:CheckBoxList></td> 
 
        <td> 
 
       </td> 
 
        <td><%# Item.BirthDate.Date%></td> 
 
        <td><%# Item.F1 %></td> 
 
        <td><%# Item.F2 %></td> 
 
        <td><%# Item.F3 %></td> 
 
       </tr> 
 
      </ItemTemplate> 
 
     </asp:ListView>

選定的行不CheckBoxList的項目,並在字符串selectedItems顯示:

 CheckBoxList cblRoles = ListView2.Items[0].FindControl("CheckNew") as CheckBoxList; 
 
     
 
     string selectedItems = ""; 
 

 
     for (int i = 0; i < cblRoles.Items.Count; i++) 
 
     { 
 
      if (cblRoles.Items[i].Selected) 
 
      { 
 
       selectedItems = selectedItems + cblRoles.Items[i].Value + ","; 
 
      } 
 
     } 
 
     
 
     
 

回答

0

我的問題是要找到複選框,我只是錯過了這一點:

foreach (ListViewDataItem item in this.ListView2.Items) 
       { 
        if (item.ItemType == ListViewItemType.DataItem) 
        { 

和所有工作。

我button_click方法:

  List<int> ls = new List<int>(); 

      { 

       foreach (ListViewDataItem item in this.ListView2.Items) 
       { 
        if (item.ItemType == ListViewItemType.DataItem) 
        { 
         CheckBox chkRow = item.FindControl("CheckBox") as CheckBox; 

         if (chkRow.Checked) 
         { 
          int request = int.Parse((item.FindControl("FirstFind") as Label).Text.Trim()); 

          ls.Add(request); 


         } 
        } 
       } 


       repository.Approved(ls, newstat); 

更新方法

public void Approved(List<int> list,int stat) 
     { 


      var friends = context.Requery.Where(f => list.Contains(f.parametr)).ToList(); 

      friends.ForEach(a => 
      { 
       a.par1 = 0; 
       a.par2 = stat; 
      }); 


      context.SaveChanges(); 

     } 
0

我最近使用這種UI。首先我創建了Table UI,我在後面的代碼中創建了填充Table方法。我使用ADO.net進行數據訪問。

注意:創建存儲過程以獲取數據並在點擊按鈕後更新數據。

第1步:寫入填充表方法,在創建對象的複選框,但我用單選按鈕。

    using (mTableRow = new HtmlTableRow()){ 
        { 

         #region Radio Button 

         using (HtmlTableCell lTableCell = new HtmlTableCell()) 
         { 
          RadioButton mradioButton = new RadioButton(); 
           mradioButton.ID = "Radio" + listInfo.ID; 

           mradioButton.GroupName = "rowSelector1"; 
           mradioButton.AutoPostBack = true; 
           mradioButton.Checked = false; 

           mradioButton.CheckedChanged += new EventHandler(AvailableRadioButton_CheckedChanged); 

           lTableCell.Attributes["class"] = "RadioButton"; 
           lTableCell.Controls.Add(mradioButton); 

           mTableRow.Cells.Add(lTableCell); 

           #endregion 
         // add all the remaining columns 
          // add table row to the table. 

第2步:創建一個事件點擊複選框的方法。

+0

注:在這裏您複選框ID應該是唯一的。因此,您將表中的主鍵列連接起來,並且還必須在查詢或存儲過程中使用主鍵。然後只有你能夠選擇該行。 – 123456

+0

謝謝,但我有ListView –