2017-03-04 31 views
0

我努力让我的“复制到剪贴板”代码完全工作。现在我可以手动输入行索引,但是它是硬编码的,所以它只会复制特定行,无论我点击哪一行。我有一个GridView,其中包含以下ASP.NET OnClientClick事件。我遇到问题的地方在于“MainContent_GridViewTickets_txtCopyToClipboard1_0”。我需要能够动态地将最后的“0”设置为行索引。有没有人有什么建议?的GridView行中的JavaScript onclick事件ASP.NET C#

<asp:LinkButton ID="lblTrailer1" runat="server" Text='<%# Bind("Trailer1") %>' OnClientClick="clipboardData.setData('Text', document.getElementById('MainContent_GridViewTickets_txtCopyToClipboard1_0').value);"></asp:LinkButton> 

回答

0

您可以在客户端单击操作后获取行索引。例如,

<script type = "text/javascript"> 
    function GetSelectedRow(lnk) { 
     var row = lnk.parentNode.parentNode; 
     var rowIndex = row.rowIndex - 1; 

     return rowIndex; 
    } 
    </script> 
      <ItemTemplate> 
       <asp:LinkButton ID="lnkSelect" runat="server" Text="Select" CommandName = "Select" OnClientClick = "return GetSelectedRow(this)" /> 
       </ItemTemplate> 

你的情况:的document.getElementById( 'MainContent_GridViewTickets_txtCopyToClipboard1_' + GetSelectedRow(本))

+0

这是它!很好的答案和易于遵循。谢谢! – b3ns

+0

欢迎您:) – Murad

0

Container被GridviewRow作为IDataContainer行方面的到来。

你可以用它查找的是位于同一行的另一个控制..

<asp:LinkButton 
ID="lblTrailer1" 
runat="server" 
Text='<%# Bind("Trailer1") %>' 
OnClientClick='clipboardData.setData("Text", document.getElementById("<%#((GridViewRow)Container).FindControl("txtCopyToClipboard1").ClientID%>").value);'> 
</asp:LinkButton>