2017-03-04 19 views
0

"Copy To Clipboard"コードが完全に機能するように苦労しています。今は行インデックスを手動で入力することができますが、それはハードコードされているため、クリックした行に関係なく特定の行のみをコピーします。私はGridViewに次のASP.NET OnClientClickイベントを持っています。私が問題を抱えているのは、 "MainContent_GridViewTickets_txtCopyToClipboard1_0"です。その最後の "0"を行インデックスに動的に設定できる必要があります。誰にも何か提案はありますか?Javascript内のGridView行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はIDataContainerとして行コンテキストに来るGridviewRowあります。

あなたが同じ行にあるものを別のコントロールを見つけるために使用することができ

..

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