将所选列表视图的ID从一个页面解析到另一个页面&绑定所选ID的列表视图

时间:2016-11-25 14:54:57

标签: c# asp.net listview parsing

我有listview与数据库。我在每行都有复选框,所以我希望用户可以选中带复选框的特定行。选定的ID应该解析到另一个页面&在另一个页面上绑定该ID的列表视图。下面的代码我尝试从page1 listview中选择行,但我不知道如何将其解析到另一个页面&绑定所选行的列表视图。

List<string> ListItems = new List<string>();
foreach (void el_loopVariable in consignements.Items) {
    el = el_loopVariable;
    foreach (void item_loopVariable in el.Controls) {
        item = item_loopVariable;
        if (item is CheckBox) {
            if (((CheckBox)item).Checked == true) {
                ListItems.Add(((CheckBox)item).ToolTip);
            }
        }
    }
}


<asp:ListView ID="consignements" runat="server" DataKeyNames="ID">
   <ItemTemplate>
       <tr>
           <td><asp:CheckBox ID="chk" runat="server" ToolTip='<%# Eval("ID") %>' /></td>
           <td><asp:HyperLink ID="bookingID" runat="server" Text='<%# Eval("booking_ID") %>'></asp:HyperLink></td>
           <td><%# Eval("DateOfBooking", "{0:MMM dd, yyyy}") %></td>
           <td><%# Eval("consigner") %></td>
           <td><%# Eval("consignee") %></td>
           <td><%# Eval("origin") %></td>
           <td><asp:Label ID="mode" runat="server" ToolTip='<%# Eval("mode") %>'></asp:Label></td>
           <td><%# Eval("destination") %></td>
           <td><%# Eval("payee") %></td>
           <td><%# Eval("quantity") %></td>
           <td><%# Eval("shipper") %></td>
           <td><%# Eval("pod") %></td>
           <td style="text-align:right"><%# Eval("refInvoiceNo") %></td>
       </tr>
    </ItemTemplate>
</asp:ListView>

1 个答案:

答案 0 :(得分:0)

首先,将Label添加到ListView,将ID作为Text绑定到它,并将Visibility设置为False。您可以使用它将ID传递回代码。

<asp:Label ID="Label1" runat="server" Text='<%# Eval("ID") %>' Visible="false"></asp:Label>

在后面的代码中,您可以循环所有ListViewDataItems并转换控件。

protected void Button1_Click(object sender, EventArgs e)
{
    List<string> ListItems = new List<string>();

    foreach (ListViewDataItem item in consignements.Items)
    {
        CheckBox checkBox = item.FindControl("chk") as CheckBox;
        Label label = item.FindControl("Label1") as Label;

        if (checkBox.Checked == true)
        {
            ListItems.Add(label.Text);
        }
    }
}