如何在javascript中访问转发器标签值

时间:2012-04-16 11:30:24

标签: c# javascript asp.net

这是我的javascript

  function btnEditClick() {
    alert(document.getElementById('<%=LblRefPhyID.ClientID %>').value);          
  }


<asp:Repeater ID="repeaterRefPhysicianList" runat="server">
  <ItemTemplate>
    <tr onclick="selectRow(this);">
      <td class="csstablelisttd" style="display: none;">
        <asp:Label ID="LblRefPhyID" runat="server" Text='<%#Eval("Ref_Phy_ID")%>'></asp:Label>  
      </td>

                                                 

在客户端点击编辑按钮我必须将RefphyId传递到另一个页面我该怎么做..

4 个答案:

答案 0 :(得分:1)

这是一个转发器。这意味着,对于数据绑定集合中的每个项,ItemTemplate重复

这有一个警告:ID应该是唯一的。因此,当您说asp:Label的ID为LblRefPhyID时,ASP.NET会自动为您生成转发器的每个实例的唯一ID,最终会生成您生成的HTML。这些生成的ID将基于您LblRefPhyID的原始值,但不一定如此,因此转发器的普通document.getElementById() 外部将无效。

有很多方法可以解决这个问题,您需要做的第一步是实际编写一些将自动生成的ID考虑在内的代码。也许写一些Javascript来使用LblRefPhyID.ClientID来缓存ID,也许可以动态onclick,无论如何。

修改

而且,是的,@Pointy完全正确地指出label元素没有值,只有它们的内部HTML。我不明白为什么他因为给出正确答案而被投票。

答案 1 :(得分:1)

尝试设置css类而不是id,并按类名绑定元素click事件。 我正在使用jquery:

$(document).ready(function(){
  //bind click event on our label class
  $('.lblRef').live('click', function(){
    alert($(this).text());
   });
});

这是在asp.net页面代码中:

<asp:Label CssClass="lblRef" runat="server" Text='<%#Eval("Ref_Phy_ID")%>'></asp:Label>

答案 2 :(得分:0)

HTML <label>元素没有“值”。他们确实有内容:

alert(document.getElementById('<%=LblRefPhyID.ClientID %>').innerHTML);

答案 3 :(得分:0)

最好的方法是检查客户端转发器生成的id模式是什么,然后您可以使用该id来使用innerHTML获取标签的值。 例如,在您的情况下,生成的id可能是: repeaterRefPhysicianList_LblRefPhyID_01直到源中的行数。

因此,您可以将此信息与innerHTML一起使用以获取标签的值。 总而言之,只需查看您的html页面,您将知道下一步该做什么:)