asp.net
  • vb.net
  • repeater
  • 2011-08-04 39 views 0 likes 
    0

    我有一个常规的HTML锚链接绑定到Id列。我想通过中继器循环并获取Id列的值,但无法弄清楚如何。我的转发器标记下面有一些代码。我无法弄清楚如何用一个客户端锚标签来做到这一点。从中继器获取锚标签的价值?

    <asp:Repeater ID="repSearchResults" runat="server"> 
        <ItemTemplate> 
         <tr> 
          <td><a href='<%#Eval("Id")%>'><%#Eval("Id")</a></td> 
         </tr> 
    </asp:Repeater> 
    
    Protected Sub btnGetIds_Click(ByVal sender As Object, ByVal e As System.EventArgs) 
        For Each item As RepeaterItem In repSearchResults.Items 
         If (item.ItemType = ListItemType.Item) Then 
    
          'Get Id here 
    
         End If 
    
    
    
        Next 
    End Sub 
    

    回答

    2

    你可以添加一个隐藏字段,每个模板中:

    <ItemTemplate> 
        <asp:HiddenField ID="hid" runat="server" Value='<%#Eval("Id")%>' /> 
        ... 
    </ItemTemplate> 
    

    ,然后在循环中:

    If item.ItemType = ListItemType.Item Then 
        Dim ctrl As HiddenField = TryCast(item.FindControl("hid"), HiddenField) 
         If ctrl IsNot Nothing Then 
          Dim id As String = ctrl.Value 
          ' do something with the id 
        End If 
    End If 
    
    +0

    这也是一个选项,但是在你的解决方案和Josh的之间,是否有优势? – Xaisoft

    +0

    @ Xaisoft,如果以后你决定使用别的东西作为锚点的文本,除了id之外,Josh的解决方案将不再起作用,而隐藏字段则保证你总能得到id。 –

    +0

    优秀的一点。乔希的解决方案奏效了,但我现在会尝试你的解决方案。 – Xaisoft

    2

    您需要将anchor runat = server命名,然后使用FindControl方法对其进行访问。

    +0

    我想我需要做的这一点,但不知道是否有其他方式。谢谢。 – Xaisoft

    +0

    我会试试看,并让你知道。 – Xaisoft

    +0

    这里是一个链接,也许它是有帮助的:http://forums.asp.net/t/1297156.aspx/1 – Josh

    相关问题