Javascript OnClick事件ASP.NET C#中的GridView行

时间:2017-03-04 20:53:36

标签: javascript c# asp.net

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

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

2 个答案:

答案 0 :(得分: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(&#39; MainContent_GridViewTickets_txtCopyToClipboard1 _&#39; + GetSelectedRow(this))

答案 1 :(得分: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>