2016-11-25 6 views
0

データベースとバインドリストビューを持っています。私は各行にチェックボックスを持っているので、ユーザーが特定の行を選択できるようにチェックボックス&が選択されたIDは別のページに解析されるべきです&別のページのそのIDのバインドリストビュー。コードに続いて、私はpage1 listviewから選択された行を取得しようとしましたが、別のページにどのように解析するのか分かりません。&選択された行のリストビューをバインドします。リストビューの選択されたIDを1ページから別のページに解析し、選択したIDからリストビューをバインドします。

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> 

答えて

0

まず、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); 
     } 
    } 
} 
関連する問題