在代码隐藏中从Repeater获取值

时间:2015-11-26 08:33:13

标签: c# asp.net repeater

<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,它显示我的数据没有问题。我需要在代码隐藏中访问TeklifId。我将做类似的事情:

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

要做到这一点,我需要在添加TeklifId时获取所有Repeater

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

无论如何,为了找到你必须在转发器控制的ItemDataBound控件中找到它的值,但为此你必须通过添加{{1}使strong标签成为服务器控件。像这样的attrribute: -

runat="server"

然后,在您的repeatre控件中添加ItemDataBound事件,如下所示: -

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

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

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

答案 2 :(得分:0)

中继器代码:

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