我正在努力让我的“复制到剪贴板”代码完全正常工作。现在我可以手动输入行索引但是它是硬编码的,所以它只会复制特定的行,无论我点击哪一行。我有一个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>
答案 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>