在代码隐藏中从 Repeater 获取值

Get a value from Repeater in code-behind

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="EntityDataSourceTeklifler">
     <ItemTemplate>
          <div class="panel panel-primary">
               <div class="panel-body">
                    <strong>Teklif Kodu:</strong>&nbsp;<%#Eval("TeklifId") %><br />
                    <strong>Teklif Tarihi:</strong>&nbsp;<%#Eval("TeklifTarih") %><br />
                    <strong>Teklifi Hazırlayan:</strong>&nbsp;<%#Eval("Name") %>&nbsp;<%#Eval("Surname") %><br />
                    <strong>Firma Adı:</strong>&nbsp;<%#Eval("FirmaAdi") %><br />
                    <strong>Sipariş:</strong>&nbsp;<%#Eval("FUrunId") %><br />
                    <strong>Teklif Tutarı:</strong>&nbsp;<%#Eval("TeklifTutar") %><br />
               </div>
          </div>
    </ItemTemplate>
</asp:Repeater>

如您所见,我有一个 Repeater,它可以毫无问题地显示我的数据。我需要在代码隐藏中访问 TeklifIds。我要做类似的东西:

if(TeklifId == 1)
{
  //do something
}
else if(TeklifId == 2)
{
  //do something else
}

为此,我需要在添加到 Repeater 时获取所有 TeklifId

TeklifId 放在 Label 控件中,这样您就可以使用 IDFindControl 来获取这样的值:

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

然后:

foreach (RepeaterItem item in Repeater1.Items)
{
     var TeklifId = (Label)item.FindControl("TeklifId");
     if (TeklifId == 1)
     {
         //do something
     }
}

理想情况下,您应该在 ItemTemplate 标记内包含一些 ASP.NET 控件(例如 Label, Textbox 控件)的数据,因为它们很容易使用。但我不确定您为什么要直接添加普通的 html 标签。

无论如何,要找到该值,您必须在转发器控件的 ItemDataBound 控件中找到它,但为此您必须通过添加 [=] 使 strong 标记成为服务器控件17=] 属性如下:-

<strong id="TeklifId" runat="server">Teklif Kodu:</strong>&nbsp;<%#Eval("TeklifId") %>

然后,像这样在您的 repeatre 控件中添加 ItemDataBound 事件:-

<asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand"

最后在后面的代码中你可以找到这样的值:-

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.AlternatingItem || 
       e.Item.ItemType == ListItemType.Item)
    {
       HtmlGenericControl TeklifId = e.Item.FindControl("TeklifId") as HtmlGenericControl;
       string TeklifId = TeklifId.InnerText;  //value here
    }
}

转发器代码:

<td>
   <span runat="server" id="lbBranchname" style="font-style:italic;"><%# Eval("branchname")%></span>
</td>

隐藏代码:rptBranch_ItemCommand

HtmlGenericControl lbBranchname = e.Item.FindControl("lbBranchname") as HtmlGenericControl;
BranchName = lbBranchname.InnerText;