漫漫技术人生路

C#

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script type="text/javascript">
function test()
{
  var lb = document.getElementById("Select1");
  //取的那个下拉框
  var con = lb.options[lb.selectedIndex].text;
  //得到你选择的下拉框的文本再调用呢个CallTheServer,是一个由服务器端输出的js函数
  CallTheServer(con,'');
}
function ReceiveServerData(yValue)
{
  Results.innerHTML = yValue;
}
</script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
    <select id="Select1">
<option value=1 selected="selected" runat="server">老鼠徒弟</option>
<option value=2>吴旗娃师傅</option>
</select>
<br />
<br />
<input onclick="test()" value="从服务器返回下拉框文本" type=button>
<br />
<br />
<span ID="Results"></span>
<br />

    </div>
    </form>
</body>
</html>
#region
/*
 * 第二种方法:在上面的方法中我们必须要在前台绑定后台,那么如果不绑定呢?我们这样做:

  直接把GetCallbackEventReference当做js函数中的一个实现内容,然后把这个js函数注册到客户端。
 */
#endregion
public partial class TestPage : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
        string callbackScript;
        callbackScript = "function CallTheServer(arg,context)" + "{ " + cbReference + "} ;";
        Page.ClientScript.RegisterStartupScript(this.GetType(), "abcdefg", callbackScript, true);
        //第四个参数代表是不是要自动给着脚本加上<script type="text/javascript"></script>标记,当然要加啊

    }
    private string ss;

    public void RaiseCallbackEvent(string eventArgument)
    {
        this.ss = eventArgument;
    }

    //public string RaiseCallbackEvent(string eventArgument)
    //{
    //   return eventArgument;
    //这是不行的
    /*
    经查 [C#]
public delegate void CallbackEventHandler(
object sender,
CallbackEventArgs e
);
无返回
     * 可以通过全局类变量公共属性域来实现取值这是一个很重要的思想,当然用session可以在同一页面内也可用viewstate;
     */
    //}


    public string GetCallbackResult()
    {
        return "你选择的是" + this.ss;
    }


}

#region javascript页面间传值
/*
    [转贴 2006-05-12 12:59:49 | 发表者: wrfwjn]    
这两窗口之间存在着关系.父窗口parent.htm打开子窗口son.htm
子窗口可以通过window.opener指向父窗口.这样可以访问父窗口的对象.
优点:取值方便.只要window.opener指向父窗口,就可以访问所有对象.
       不仅可以访问值,还可以访问父窗口的方法.值长度无限制.
缺点:两窗口要存在着关系.就是利用window.open打开的窗口.不能跨域.
      
Post.htm
<input type=text name=maintext>
<input type=button onclick="window.open('Read.htm')" value="Open">

Read.htm
<script language="javascript" >
//window.open打开的窗口.
//利用opener指向父窗口.
var parentText = window.opener.document.all.maintext.value;
alert(parentText);
</script>
 */
#endregion

------------------------------------

public partial class Default2 : System.Web.UI.Page, ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("<script language=\"javascript\" type=\"text/javascript\">");
        sb.Append("function initServerTimeRequest(){");
        sb.Append("var message = \"\";");
        sb.Append("var context = \"\";");
        sb.Append(this.ClientScript.GetCallbackEventReference(this, "message", "serverTimeFetched", "context", false));
        sb.Append("}");
        sb.Append("</script>");
        this.ClientScript.RegisterStartupScript(GetType(), "StartupOne", sb.ToString());
    }
    public string GetCallbackResult()
    {
        return DateTime.Now.ToString();
    }

    public void RaiseCallbackEvent(string eventArgument) { } 


}
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
     <script language="javascript" type="text/javascript">
      function requestServerTime()
      {
        initServerTimeRequest();
      }
      function serverTimeFetched(message, context)
      {
        document.getElementById("spanTest").innerText = message;
      }
    </script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
    <span id="spanTest" runat="server"></span><br />
      <button onclick="requestServerTime()" id="cmdGetServerTime" runat="server">Get Server Time</button>
        <br />
        <br />
      新华网北京4月29日电:记者许林贵 孟娜 张源培
            中国全国人大常委会29日批准中国与西班牙签署的引渡条约。
         
              这是中国与欧美发达国家之间的第一个引渡条约。据信,该引渡条约将加速中国编织国际引渡网,缉捕以贪官为主的外逃案犯。
         
              根据条约规定,中西双方有义务按照条约规定,应对方请求,相互引渡在一方境内发现的被另一方通缉的人员。在中国所有对外引渡条约中,这个条约首次出现涉及死刑问题的条款。
         
              条约规定:“根据请求方法律,被请求引渡人可能因引渡请求所针对的犯罪被判处死刑,除非请求方作出被请求方认为足够的保证不判处死刑,或者在判处死刑的情况下不执行死刑,”否则被请求方“应当拒绝引渡”。
         
              外交部副部长武大伟说,西班牙是欧盟中较有影响的国家,与之签订引渡条约“将为中国境外追捕逃犯工作提供有力的法律依据,震慑外逃犯罪分子。”
         
              中西引渡条约谈判中方代表团团长、外交部条约法律司参赞徐宏说:“中国自从对外开展刑事司法协助以来,一直把追捕境外逃犯,特别是一些贪官,作为对外司法合作的重点。”
         
              徐宏说,贪官外逃多数选择欧美国家为目的地,但在此之前,中国与欧美发达国家未有引渡条约。西班牙驻华大使馆新闻参赞拉索在接受新华社独家专访时说:“中西缔结引渡条约具有非常积极的意义,开启了两国在司法领域合作的新篇章。”
         
              他说,西班牙内政部已于本月在华设立代表处,专职负责包括引渡在内的两国司法合作。
         
              中国目前究竟有多少贪官携款外逃尚无明确官方统计。
         
              近几年来,通过国际合作,浙江省建设厅原副厅长杨秀珠,中行广东开平支行行长余振东等一些外逃贪官已在海外落网,但其中被遣返回国的却是少数。
         
              据外交部资料显示,中国自1993年以来已与泰国、白俄罗斯、南非、老挝等20多个国家缔结了引渡条约。
         
              “但这些引渡条约主要是与发展中国家谈判缔结的。此前,与发达国家的谈判难度较大。”徐宏说。
         
              2004年9月,西班牙向中国提出缔结引渡条约的建议。2005年10月,双方就条约的全部条款达成一致。2005年11月14日,《中华人民共和国和西班牙王国引渡条约》在
                式签署。按照中国的法律,条约生效还需通过最高立法机关的批准。 关于涉及死刑的条款在人大常委会审议过程中有过不同意见。

    </div>
    </form>
</body>
</html>
-----------------------------

#region  Asp.Net2.0的客户端回调是
/*
 * Asp.Net2.0的客户端回调是一种很让人激动的方法,他能够让我们控制要提交什么数据给服务器而不用提交整个页面,同时服务器也只返回你所需要的数据而不要发回整个页面。

  首先我们要说一个很重要的方法:GetCallbackEventRefernce.我把我的理解写出来,可能是错误的,恳请指出,非常感谢!

  GetCallbackEventReference首先实现让客户端脚本有能力传递参数给服务器端的RaiseCallbackEvent方法,然后返回RaiseCallBackEvent方法的值给你在GetCallbackEventRefernce方法中注册的一个参数(其实也是一个你要在客户端写的脚本)。调用GetCallbackEventRefernce你必须从客户端脚本中传递给他两个参数,一个是要传递给RaiseCallbackEvent事件的值,一个是context.

  他的参数意义如下:

  第一个:实现了ICallbackEventHandler借口的页面或者服务器控件,写this代表但前页面。

  第二个:代表你从要从客户端传递给服务器RaiseCallbackEvent方法的值

  第三个:你要在客户端写的一个js函数,同时,服务器也会把计算得到的数据传递给这个函数做为这个函数的参数。

  第四个:context具体什么意思我也不太清楚GetCallbackEventRefernce发送到了客户、端的代码是这样的:

WebForm_DoCallback('__Page',arg,ReceiveServerData,context,null,false)
 * 第一种:在后台写个public string,在Page_Load中给他赋值为:=Page.ClientScript.GetCallbackEventReference(this, "message", "ShowServerTime", "context");注意在这里是Page.ClientScrip,因为他会返回个ClientScriptManager,ClientScriptManager管理所有的客户端脚本。然后在前台某个按钮的onclick事件里<%=那个public后台字符串%>.做个小实验代码如下:
第二中在TestPage.aspx 中
 * 第三种在serverButton中
 */
#endregion
public partial class javascrpt : Page, ICallbackEventHandler
{
    //一定要实现ICallbackEventHandler借口
    public string sCallBackFunctionInvocation;


    protected void Page_Load(object sender, EventArgs e)
    {
        sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this, "message", "ShowServerTime", "context");

    }
    public void RaiseCallbackEvent(string eventArgument)
    {
      ViewState["id"]= DateTime.Now.ToString();
        //ViewState["id"] = eventArgument;
    }

    public string GetCallbackResult()
    {
        return "你选择的是" + ViewState["id"].ToString() ;
    }

}

#region ASP.NET2.0实现无刷新客户端回调

 <p><input type="button" value="得到服务器端时间" onclick="GetServerTime();" /> </p>

 <script language="javascript" type="text/javascript">

function GetServerTime()
{
  var message = '';
  var context = '';
  <%=sCallBackFunctionInvocation%>
}

function ShowServerTime(timeMessage, context) {
  alert('现在服务器上的时间是:\n' + timeMessage);
}
</script>
------------------------------

 function isDel()
 {
  var x = window.confirm('是否删除?');
  if (x)
  {
   return true;
  }
  else
  {
   return false;
  }
 }
 
 function isVote()
 {
  var x = window.confirm('是否投票?');
  if (x)
  {
   return true;
  }
  else
  {
   return false;
  }
 }
 */
/// </summary>
public partial class serverButton : System.Web.UI.Page,ICallbackEventHandler
{
    protected void Page_Load(object sender, EventArgs e)
    {//第四个参数为null,因为你不可能再在js中给他传参数了
   string str = Page.ClientScript.GetCallbackEventReference(this,"document.getElementById('Select1').options[document.getElementById('Select1').selectedIndex].text","Re",null);
   //return false是为了防止提交窗体
   Button1.Attributes.Add("onclick",str+";return false;");
   //return false是为了防止提交窗体
   Button1.Attributes.Add("onclick",str+";return false;");

    }

    #region ICallbackEventHandler Members
 
  public void  RaiseCallbackEvent(string eventArgument)
  {
   if (eventArgument == "老鼠徒弟")
   {
    Session["od"]= "老鼠徒弟:人生如鼠,不在仓就在厕!";
   }
   else
   {
   Session["od"]= "吴旗娃师傅:自信自强,乐观向上";
   }
  }

     public string GetCallbackResult()
    {
        return "你选择的是" + Session["od"].ToString() ;
    }
  #endregion

}
<body>
    <form id="form1" runat="server">
    <div>
    <select id="Select1">
<option selected="selected" value=1>老鼠徒弟</option>
<option value=2>吴旗娃师傅</option>
</select>
<asp:Button ID="Button1" runat="server" Text="这是个服务器按钮" /></div>
<div id="div1" />
<script type="text/javascript">
function Re(ret)
{
  document.getElementById("div1").innerHTML = ret;
  alert(ret);
}
</script>

    </form>
</body>

posted on 2006-10-07 10:27  javaca88  阅读(256)  评论(0编辑  收藏  举报