2012-02-07 63 views
0

我正在使用C#web應用程序中的listview。我的問題是我想要從列表視圖中檢查項目。我嘗試找到selecteditem和所有。我不知道如何從複選框選中的項目裏面listview.My代碼如下: -想從列表視圖中檢查項目

ASPX

<asp:ListView ID="PackagesListView" runat="server" DataSourceID="PackagesDataSource" ItemPlaceholderID="itemPlaceholder" 
     GroupItemCount="4" GroupPlaceholderID="groupPlaceholder" OnItemDataBound="PackagesListView_ItemDataBound"> 
    <LayoutTemplate> 
     <table style="margin-left:0px; width:570; table-layout:fixed; overflow:hidden;"> 
     <tr ID="groupPlaceholder" runat="server" > 
     </tr> 
     </table> 
    </LayoutTemplate> 
    <GroupTemplate> 
     <tr class="productsTableRow"> 
     <td ID="itemPlaceholder" runat="server"></td> 
     </tr> 
    </GroupTemplate> 

    <ItemTemplate> 
     <td style="width:140px;"> 
     <div style="text-align:center; line-height:1.5;"><asp:Label ID="PackageLabel" runat="server" Text='<%#Eval("Name")%>' /></div> 
     <div style="text-align:center;"><asp:CheckBox ID="PackageCheckBox" runat="server" OnCheckedChanged="OnPackageSelected" AutoPostBack="true" PackageID='<%#Eval("PackageID")%>' /></div> 
     </td> 
    </ItemTemplate> 
    </asp:ListView> 
    <asp:Button ID="ButtonSaveQuotation" runat="server" Text="Save Quotation" 
        CssClass="button" Visible="false" onclick="ButtonSaveQuotation_Click1" /> 

aspx.cs

 protected void ButtonSaveQuotation_Click1(object sender, EventArgs e) 
    { 
     StringBuilder sb = new StringBuilder(); 


    } 

所以在這裏SB我想添加其複選框被選中的所有標籤的文本。謝謝您

+0

你可以使用ListView.CheckedItems? – John3136 2012-02-07 01:03:02

+0

你的意思是我的例子PackagesListView.CheckedItems正確嗎?不,我不知道爲什麼,但我沒有那個屬性。 – Hiren 2012-02-07 01:06:59

回答

2

你必須找到對應的複選框,因爲它的模板字段 實例裏面:

if (PackagesListView.Items.Count > 0) 
{     
    for (int i = 0; i < PackagesListView.Items.Count; i++) 
    { 
     CheckBox PackageCheckBox= (CheckBox)PackagesListView.Items[i].FindControl("PackageCheckBox"); 
     if (PackageCheckBox!= null) 
     { 
      if (PackageCheckBox.Checked.Equals(true)) 
      { 
       //do your stuff here 
      } 
     } 
    } 
} 
1
foreach (var item in PackagesListView.Items.Where(i => ((CheckBox)i.FindControl("PackageCheckBox")).Checked)) 
{ 
    var label =(Label) item.FindControl("PackageLabel"); 
    label.Text += " Appended text"; 
} 

也許這會幫助你?這應該在頁面加載後進行。還要確保你不重新綁定你的列表視圖。

0
var texts = PackagesListView.Items.Cast<Control>() 
       .Where(c => ((CheckBox)c.FindControl("PackageCheckBox")).Checked) 
       .Select(c => ((Label)c.FindControl("PackageLabel")).Text); 

var sb = new StringBuilder(); 
foreach (var text in texts) 
    sb.AppendLine(text);