winform下的代码:  string s=string.Empty;
  IDataObject o = Clipboard.GetDataObject();
  if (o.GetDataPresent(DataFormats.CommaSeparatedValue))
  {
      StreamReader sr = new StreamReader((Stream)o.GetData(DataFormats.CommaSeparatedValue),Encoding.GetEncoding("gb2312"));
      s = sr.ReadToEnd();
      sr.Close();
  }
这段代码的含义是:将剪贴板中的数据以csv的格式读取到变量s中,其中必须以csv格式读取,因为剪贴板中的内容是从Excel中复制的,如果以文本方式读取将不能正确解析。现想在web form中实现同样的功能,该web form中有一个button1,单击该button1后就可以将剪贴版中的内容以csv的格式读取到web form中的c#变量string s 中,不得使用隐藏控件传递。本人对asp.net并不熟悉,还望给出尽可能详细的代码。谢谢

解决方案 »

  1.   

    这个不得不借助javascript来实现,因为asp.net在客户端运行环境就是浏览器,所以是没有办法直接读取的<SCRIPT>
    var bResult;
    // 选中要剪切的文本。在剪切事件中文本选中区的尾随空格导致剪
    // 切选快捷菜单项目保持无效。
    function fnLoad() {
        var r = document.body.createTextRange();
        r.findText(oSource.innerText);
        r.select();
    }// 启用剪切快捷菜单项目,该项目在 DIV 上时默认为无效
    function fnBeforeCut() {
        event.returnValue = false;
    }// 以文本格式给 window.clipboardData 对象赋予数据。
    // 将 setData 方法的结果 (Boolean) 显示在下面的输入框内。
    function fnCut(){
        event.returnValue = false;
        bResult = window.clipboardData.setData("Text",oSource.innerText);
        oSource.innerText = "";
        tText.innerText += bResult;
    }// 启用粘贴快捷菜单项目,该项目在 DIV 上时默认也为无效
    function fnBeforePaste() {
        event.returnValue = false;
    }// 在 onpaste 中取消 returnValue 以便输入文本,该操作有默认
    // 的行为。
    function fnPaste() {
        event.returnValue = false;
        oTarget.innerText = window.clipboardData.getData("Text");
    }</SCRIPT>
    </HEAD><BODY onload="fnLoad()" TOPMARGIN=0 LEFTMARGIN=0 BGPROPERTIES="fixed" BGCOLOR="#FFFFFF"
        LINK="#000000" VLINK="#808080" ALINK="#000000"><DIV CLASS="clsSource" ID="oSource" onbeforecut="fnBeforeCut()" oncut="fnCut()">选中并剪切此文本</DIV>
    <DIV CLASS="clsTarget" ID="oTarget" onbeforepaste="fnBeforePaste()" onpaste="fnPaste()">将文本粘贴在这里</DIV><BR><SPAN CLASS="clsData">setData 结果:</SPAN>
    <INPUT CLASS="clsText" ID="tText" TYPE="text" READONLY VALUE="" SIZE="6" TABINDEX="-1"></BODY>
      

  2.   

    新建的web技术交流群,欢迎大家加入一起讨论:
    群号:29037453
      

  3.   

    另外,你点击button1的时候,会引起页面的回传,所以,不利用隐藏域保存你从剪贴板上面读下来的数据,就没有办法将数据提交到服务器端,这个是web的基本原理了。
      

  4.   

    谢谢回答,请看清题目,
    第一获取剪贴板的内容最后的结果是csv格式,不是普通的获取文本
    第二不用隐藏控件,js不可以直接操作c#变量吗?
      

  5.   

    Clipboard 不能在 Asp.NET 中使用?