4

テーブルに行を追加する Repeater コントロールがあります。各セル内のデータは、リピーターにバインドされた Datatable から取得されます。

簡単な例:

<asp:Repeater ID="Repeater1" runat="server">
  <ItemTemplate>
   <tr>
     <td>
        <%# DataBinder.Eval(Container.DataItem, "PartNumber")%>
     </td>
     <td>
         <%# DataBinder.Eval(Container.DataItem, "Quantity")%>
     </td>
   </tr>
</ItemTemplate>

コード ビハインドでは、各リピーター行をループして、その行の Quantity の値を取得できるようにしたいと考えています。

これまでのところ、私が持っているのは次のとおりです。

foreach (RepeaterItem ri in Repeater1.Items)
{

} 
4

4 に答える 4

11

コンテンツをラベルに入れ、コードビハインドのラベルにアクセスします。

<asp:Repeater ID="Repeater1" runat="server"> 
   <ItemTemplate> 
   <tr> 
     <td> 
         <asp:Label ID="lblPartNumber" runat="server" Text='<%#Eval("PartNumber")%>' /> 
     </td> 
     <td> 
         <asp:Label ID="lblQuantity" runat="server" Text='<%#Eval("Quantity")%>' />
     </td> 
   </tr> 
   </ItemTemplate> 
</asp:Repeater>

そして、背後にあるコードでは:

foreach (RepeaterItem ri in Repeater1.Items)
{
    Label quantityLabel = (Label)ri.FindControl("lblQuantity");
    Label partNumberLabel = (Label)ri.FindControl("lblPartNumber");

    string quantityText = quantityLabel.Text;
    string partNumberText = partNumberLabel.Text;
}
于 2011-08-31T14:08:57.137 に答える
4

ラベルを使用できます:

<td>      
    <asp:Label ID="lblPartNumber" runat="server" Text='<%#Eval("PartNumber")%>' />      
</td>      
<td>      
    <asp:Label ID="lblQuantity" runat="server" Text='<%#Eval("Quantity")%>' />     
</td>  

そして、リピーターOnItemDataBoundイベントのラベルの値を取得します。

protected void repeater_OnItemDataBound(object sender, RepeaterItemEventArgs  e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    {
        foreach (Control c in e.Item.Controls)
        {
            if (c is Label)
            {
                // Grab label
                Label lbl = c as Label;
                String your_value = lbl.Text;
            }
        }
    }    
于 2011-08-31T15:22:06.657 に答える
1

後で取得できるように、リピーターに DataKeys を設定する必要があります。

http://www.singingeels.com/Articles/The_ListView_Dominates_The_Repeater.aspx

EDIT:ちなみに、「Repeater DataKeys」をグーグルで検索したところ、この記事が上部にありました... 4年前に記事を書いたので、残酷なことをしないでください!(そこにサンプルの C# コードがあります)。

于 2011-08-31T13:20:52.177 に答える
1

要素内のアイテムを取得することで、要求したことを実行riできます。つまり、そのコンテンツにアクセスできることを意味します。

通常、最初のアプローチよりも少し優れたアプローチは、リピーターの ItemTemplate 内に id およびその他のプロパティを持ついくつかのコントロールを配置することですri.FindControl("yourControlId")。その値またはテキスト プロパティを使用します。

これは通常の方法であり、匿名の td または tr の代わりに ID を使用する方が適切です :)

于 2011-08-31T13:23:22.470 に答える