我们都知道可以在后台cs文件里定义事件,然后把这个事件绑定给某个控件,现在有这么一个问题,我用数据库内的表生成了一个表格,每行就是数据表的一行信息,每行的最前面有一个删除链接,点击就会删除掉该行,因为我这个表格是用asp.net的litera控件写html代码生成的,没办法在每行都插入asp.net控件,只能在每行插入一个锚连接,利用这个链接跳到另外一个页面,在这个页面的load事件中删除该行,但这种方法感觉不好,再就是从删除完毕后不太好回到原来的页面状态(比如页数就被重置了),我现在的想法就是,要么用javascript直接调用后台的一个事件来完成删除,要么就想办法把每行开头的那个用来删除的锚连接换成asp.net按钮,但是怎么实现呢?

解决方案 »

  1.   

    使用jquery的$.ajax方法提交数据。
      

  2.   

    首先,楼主想的是可以实现的。其次,不建议这种简单操作用这种方法,.NET中完全有替代方法,且你想的方法,脱离了ASP.NET的本意,不建议。
    1、自己后台写的html,可以在前台用listview来替代,这样,内中的控件,就可以实现自定义,并且控件有了事件,遵循ASP.NET的精要;
    2、自己后台写的html,可以动态插入ASP.NET控件,并为控件绑定事件;
    3、如果一定要遵循LZ的用法,那么方法其实还有很多,例如前台的HTML加入post,然后手动在后台事件中提取POST过来的参数;
    4、对方法3的补充,可以用楼上所云的AJAX技术,或者GET等等。
      

  3.   

    假设你仍然是希望每一个动作都通过服务器一遍遍生成和下载html的这种过时的web方式(而不是ajax方式)来编写前端程序,那么我建议你先去精通asp.net GridView控件,了解其内部机制,然后用你的所谓开发工具重新发明一个GridView组件。也就是说,你想问“怎样实现?”,那么你就要模仿它来实现控件状态管理、控件(后台)事件机制,来模仿出winform的编程体验。但是这是非常麻烦的,需要很深度的知识,需要有“读asp.net服务器控件源代码”这种经历才能开发。想跟你轻松地说明白如何开发这类东西,恐怕不是时候。
      

  4.   

    大概更合适的方式,是使用GridView等服务器控件来编写你的应用程序,而不是用低级的html/javascript来从头编写。因为你会发现一个功能实现了,马上就会需要再实现进一步的功能。我们招聘web前端开发人员,假如说他自称“精通jQuery”,那么我就会给他一台电脑然后让他写出一个各种用户操作行为和开发效率功能(例如可以方便地绑定数据自动生成、可以方便地编辑某个字段的模版,等等)都类似于或者超过asp.net的GridView控件的程序来。因为一个简单的表单编辑控件式最基本的开发工具。因为我们是招聘企业软件开发人员,而不是招聘做简单网页的。
      

  5.   

    一直没用过ajax技术,看来被迫要尝试一下了1.用asp.net控件的话,我们的主管担心后期美工出问题,所以一直希望直接生成html代码,我和我的主管都是第一次接触asp.net技术,不清楚用复杂的控件会不会对后期美工造成影响
    2、其实第二条方案比较符合我的设想,问题是,我查了不少地方,就是查不到如何动态的插入控件,特别是,控件必须放在特定的位置,比如每个表格行的开头第一个格子里,这又要生成html,又要在html的特定位置插入控件,是怎么实现的,烦请给个大概的思路
    3.post传递过来的参数貌似只有在page_load事件里用request获取,问题在于load里我就是不希望放太多代码进去,感觉很臃肿
      

  6.   

    1、无论listview或者gridview,都是ASP.NET精髓的一种体现。建议你使用LISTVIEW,其原理就是<不循环内容><循环内容></循环内容></不循环内容>,美工完全没问题。当然,你如果不熟悉的话,什么都是问题;
    2、动态添加控件,一搜一大把的教程,你根本没搜索过,你搜索“ASP.NET动态添加控件”,会有很多的。特地地点插入控件,只需要在父元素中加入“runat=server”,就可以在后台得到父元素了,于是也就可以指定位置了;
    3、不想在page_load中添加过多代码,这个不是理由,需求越多代码必定越多,这是无法避免的,要避免,减少需求吧。
      

  7.   

    1.这两个控件有个问题,都必须在前台编辑一个模版,然后模版定型后就只能对应一张数据表,换一张表就必须重新定义模版,就没有通用的办法了吗
    2.你说的这个我早就搜过了,现实的问题是,我是用literal控件写html代码来生成表格的,你说的哪种方法,必须事先html结构就已经固定好,在需要加入控件的地方添加runat="server",然后服务器会认为这里需要在服务器来生成,就可以动态生成控件了。然而我要的是“html代码和服务器控件同时生成,并且能确定服务器控件的位置”,我查了很多地方的都没能实现
      

  8.   

    1,在aspx的form中添加两个hidden,注意不要runat='server':
     <form id="form1" runat="server">
            <input type="hidden" id="pbArg" name="pbArg" />
        <input type="hidden" id="pbEventName" name="pbEventName" />
        //其余照旧2,在<head>中添加如下javascript:    <script type="text/javascript">
            function postBack(eventName, arg) {
                document.getElementById('pbEventName').value = eventName;
                document.getElementById('pbArg').value = arg;
                document.forms[0].submit();
            }
        </script>
    3, 生成html的“删除”链接时:<a href="javascript:postBack('delete', '要删除的条目的ID');">删除</a>
    4,在后台中这么写:protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            if ("delete".Equals(Request["pbEventName"]))
            {
                int id=int.Parse(Request["pbArg"]);
                //删除id对应的条目...
            }
        }
    }
      

  9.   


    1、对于问题1,LZ矫情了。试问哪个网站,是一个页面通吃所有应用的?还不是各页面都事先植入模版,然后后台再将html组织进各模版。要想一个页面通吃所有应用,嘿嘿,那后台的程序的复杂度不是可以想象的哦。另,LZ为什么就不能放弃全部html后台生成的方法呢?这难道不是对服务器资源与人力的浪费吗?
    2、所谓的“html代码和服务器控件同时生成,并且能确定服务器控件的位置”,也可以啊。只不过你用literal来纯自己写的方法用错了而已。你应该用htmlgeneralcontrol来生成每一个html元素(或称htmlcontrol),然后在htmlcontrol中就可以添加控件。这样,既可以把html当后台控件来控制,也可以把.NET控件由后台来控制。
      

  10.   

    有,ajaxpro.dll 但是只能在2.0中使用。