asp.net其实代替了好多原来的JAVASCRIPT的脚本的功能:)

解决方案 »

  1.   

    举个简单的例子!
    例如,datagrid的delect事件,常理,应该弹出对话框,供用户选择是否删除,但是用script和aspx结合的方法实在烦琐啊,至少要添加一个保存状态的控件,药用到javascript的_dopostback(),还要在按下del的事件中添加一大串的脚本语句,通过他们来改变和记住用户的选择,最后,利用dopostback来触发aspx的del事件,判断用户的选择,做出处理。
    你看看,功能是实现了!可是,方法也太麻烦了!
    所以,提出来,供大家讨论!
    希望用更好的方法来实现!
      

  2.   

    能不能在代码里面写:
    string str;
    str = "<script language = javascript>";
    str += "alert('kent')";
    str += "</script>";
    然后有Page.RegisterClientScriptBlock("key",str);
    或用Page.RegisterStartupScript("key",str);
      

  3.   

    to HarryandMark(涛子) :
    这种方法不好控制,用户可能会选y or n。to  runmin(*^_^*) :
    可否详细些??
      

  4.   

    WEB SERVICE是基于HTTP的一种服务形式,最大特点就是可以通过HTTP将服务器上的对象通过XML描述之后,通过HTTP传送到客户端(或者是IE,或者是APP等)。WEB SERVICE的基础就是SOAP(简单对象操纵协议)服务器端的对象用XML描述之后被封装在SOAP消息中,通过HTTP传送。用来描述对象的XML叫WSDL(WEB SERVICE定义语言,XML扩展)当客户端读取对象的时候,首先要读取WSDL,再结合SOAP消息,将对象还原。此都为机制,实现非常简单(C#,其它东西做要求WEB服务器能够处理SOAP消息,并发出相应的响应,实现不容易,C# WEB SERVICE工程都已经建好了不用我们操心了),至于客户端解析,如果用.NET系列非常方便,但是往往没有.NET环境,为了兼容,可以使用MS SOAP CLIENT组件。最后的调用方法,三条语句(javascript)
    var tmp = new ActiveXObject("MSSOAP.SoapClient");
    tmp.mssoapinit("http://yourdomain/yourservice.asmx?WSDL");
    rs = tmp.yourWebServiceMethod();    //这里调用的就是WEB SERVICE的方法,假如该方法返回的对象是Recordset那么rs就是一个Recordset实例。
      

  5.   

    还有不明白可以去.net版,或者找lostinet,他熟,呵呵,我又把他卖了。
      

  6.   

    用__doPostBack可以做很多事情。
    例如自定义一个实现IPostBackEventHandler的UrerControl
    例如实例ID是MyCtrl1然后调用 __doPostBack("MyCtrl1",stringWhatTheServerWouldDo)
    当然,这样页面要刷新一次的。在服务器MyCtrl的实现里:delegate void MyEventHandler(object sender,MyEventArgs e);
    private object _myevent=new Object();
    public event MyEventHandler MyEvent
    {
    add
    {
    Events.AddHandler(_myevent,value);
    }
    remove
    {
    Events.RemoveHandler(_myevent,value);
    }
    }
    public void RaisePostBackEvent(string eventArgument)
    {
    //现在eventArgument就是和stringWhatTheServerWouldDo一样的值
    OnMyEvent(this,new MyEventArgs(eventArgument));
    }
    protected virtual void OnMyEvent(object sender,MyEventArgs e)
    {
    MyEventHandler theDelegate=(MyEventHandler)Events[_myevent];
    if(theDelegate!=null)theDelegate(sender,e);
    }//MyEventArgs就很简单和次要了。我就不继续写了。。
    ------------
    如果你不想刷新页面,应该使用WebService.
      

  7.   

    补充一下:
    public delegate void MyEventHandler(object sender,MyEventArgs e);关联上MyCtrl的MyEvent,处理MyEventArgs中的string,
    就可以知道客户端传上来的字符串。
    分析字符串,而做不同的东西。事实上asp.net很多东西都是这个模型的。
    例如DataGrid的edit,update,cancel,delete命令都是这样传上去给DataGrid分析,然后触发EditCommand等事件
      

  8.   

    to  runmin(*^_^*) :
    非常感谢啊!to  Lostinet(迷失网络):
    看来我要好好研究server的东东了!,你写的我代码我可以看懂一些,可是这和__doPostBack("MyCtrl1",stringWhatTheServerWouldDo)
    的调用有联系吗??
    http://expert.csdn.net/Expert/topic/1213/1213430.xml?temp=.8159296
    还请关注!
      

  9.   

    哦。我上面说错了。
    DataGrid的edit...等是通过子控件的事件来触发的。
      

  10.   

    to lostinet:
    调用javascript 的dopostback的方法我知道,还想听您解释一下关于server
    端:
    自定义一个实现IPostBackEventHandler的UrerControl。
    这个我不是太明白,这和客户端的事件如何响应啊????
      

  11.   

    收到短信我就来看看,不过说实话,我不喜欢ASP.NET的做法:把服务器端和客户端合在一起,固然这样使得web编程跟普通应用编程一样便利,但是兼容性就太差,离开了MS的东西就没用了。
    至于web services,虽然很好的东西,不过在2年之内大多数网站开发还是用不到的。
      

  12.   

    1.WEB SERVICE并非单单用于网站开发,它是一种通过HTTP的服务模式;
    2.LOSTINET讲的是不是有点WEB FORM的味道啊?
      

  13.   

    呵呵,我对.net没什么研究,不能给你什么样的好建议,不过仔细研究以下Lostinet(迷失网络)的代码还是有启发的!
      

  14.   

    太感谢大家的支持!
    关于datagrid的delete的询问框,刚刚有了新的进展。代码如下:
    <script>
    function click(e){
    if (event.srcElement.outerText=="Dele")
    event.returnValue=confirm("are you sure?");
    }
    document.onclick=click;
    </script>
      

  15.   

    html的事件才用类似冒泡法的方式,可以好好利用;
    注:dataagrid的del的text=“Dele”。
      

  16.   

    关于删除前提示应该还有更简单的写法。
    html
    ---------------------------------
    function DoAsk(Word)
    {
       return confirm(Word);
    }
    ----------------------------------
    aspx
    ----------------------------------
    btn.Attributes["OnClick"]="return DoAsk('确认删除该记录?(将会删除所有与该职员相关的记录,且不可恢复!)')";
    ------------------------------------------
      

  17.   

    这个方法无法post返回原来的事件!