0

Default.aspxで使用されるDataGridがあり、要件は、選択した行のすべての列のテキストをjavascriptメソッドで取得してクリップボードにコピーすることです。現在、私はこのタスクを実行していますが、グリッドのすべての行を選択し、すべてのデータをクリップボードに貼り付けます。

Default.aspx (サンプル ファイル)

<asp:GridView ID="ObjList" runat="server" OnLoad="xyz" AutoGenerateColumns="false" OnRowDataBound="ObjList_RowDataBound" AutoGenerateSelectButton="false"> 
<Columns>
  .
  .
  .
</Columns>

javascript メソッドを呼び出してデータをクリップボードにコピーするサンプル ボタン。

<asp:ImageButton ID="BtnCopyToClipboard" ToolTip="Copy To Clipboard"   ImageUrl="img/tlb_list_copy.gif" OnClientClick="CopyGridView('ObjList'); return false;" runat="server" />

サンプル JavaScript 関数:

function CopyGridView(gridId) {
var div = document.getElementById(gridId);

var sSelectedRowText = div.Rows[iPL_SelectedRowIndex].Value;
if (div != null) {
    div.contentEditable = 'true';
    var controlRange;
    if (document.body.createControlRange) {
        controlRange = document.body.createControlRange();
        controlRange.addElement(div);
        controlRange.execCommand('Copy');
        alert(InfoMsgClipboard);
    }
    div.contentEditable = 'false';
}
}

提案、グリッドで選択された行を識別し、選択された行データのみをクリップボードにコピーする方法。

4

1 に答える 1

4
function setSelectedRowId(RowId){
        document.getElementById("txtRowId").value = RowId; }

    private void ObjList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
       if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.SelectedItem)
       {
          e.Item.Attributes.Add("onclick", "setSelectedRowId('" + e.Item.Cells[0].Text + "');
       }
于 2012-11-16T12:47:20.077 に答える