【问题标题】:Want Checked Item From Listview想要从 Listview 中检查项目
【发布时间】:2012-02-07 09:15:55
【问题描述】:

我正在使用 C# web 应用程序中的 listview。我的问题是我想从 listview 检查 Items 。我已经尝试使用 find selecteditem 和所有。我不知道如何从列表视图中的复选框中获取选中的项目。我的代码如下:-

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();


    }

所以在某人这里我想附加所有选中复选框的标签的文本。谢谢

【问题讨论】:

  • 你可以使用 ListView.CheckedItems 吗?
  • 你的意思是我的例子 PackagesListView.CheckedItems 对吗?不,我不知道为什么,但我没有那个属性。

标签: c# asp.net listview checkbox


【解决方案1】:

您必须找到复选框,因为它位于模板字段内 示例:

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
            }
        }
    }
}

【讨论】:

    【解决方案2】:
    foreach (var item in PackagesListView.Items.Where(i => ((CheckBox)i.FindControl("PackageCheckBox")).Checked))
    {
        var label =(Label) item.FindControl("PackageLabel");
        label.Text += " Appended text";
    }
    

    也许这会对你有所帮助?这应该在页面加载之后进行。还要确保你没有重新绑定你的列表视图。

    【讨论】:

      【解决方案3】:
      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);
      

      【讨论】:

        猜你喜欢
        • 2012-08-10
        • 1970-01-01
        • 1970-01-01
        • 2012-12-21
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多