我们都知道可以在后台cs文件里定义事件,然后把这个事件绑定给某个控件,现在有这么一个问题,我用数据库内的表生成了一个表格,每行就是数据表的一行信息,每行的最前面有一个删除链接,点击就会删除掉该行,因为我这个表格是用asp.net的litera控件写html代码生成的,没办法在每行都插入asp.net控件,只能在每行插入一个锚连接,利用这个链接跳到另外一个页面,在这个页面的load事件中删除该行,但这种方法感觉不好,再就是从删除完毕后不太好回到原来的页面状态(比如页数就被重置了),我现在的想法就是,要么用javascript直接调用后台的一个事件来完成删除,要么就想办法把每行开头的那个用来删除的锚连接换成asp.net按钮,但是怎么实现呢?
1、自己后台写的html,可以在前台用listview来替代,这样,内中的控件,就可以实现自定义,并且控件有了事件,遵循ASP.NET的精要;
2、自己后台写的html,可以动态插入ASP.NET控件,并为控件绑定事件;
3、如果一定要遵循LZ的用法,那么方法其实还有很多,例如前台的HTML加入post,然后手动在后台事件中提取POST过来的参数;
4、对方法3的补充,可以用楼上所云的AJAX技术,或者GET等等。
2、其实第二条方案比较符合我的设想,问题是,我查了不少地方,就是查不到如何动态的插入控件,特别是,控件必须放在特定的位置,比如每个表格行的开头第一个格子里,这又要生成html,又要在html的特定位置插入控件,是怎么实现的,烦请给个大概的思路
3.post传递过来的参数貌似只有在page_load事件里用request获取,问题在于load里我就是不希望放太多代码进去,感觉很臃肿
2、动态添加控件,一搜一大把的教程,你根本没搜索过,你搜索“ASP.NET动态添加控件”,会有很多的。特地地点插入控件,只需要在父元素中加入“runat=server”,就可以在后台得到父元素了,于是也就可以指定位置了;
3、不想在page_load中添加过多代码,这个不是理由,需求越多代码必定越多,这是无法避免的,要避免,减少需求吧。
2.你说的这个我早就搜过了,现实的问题是,我是用literal控件写html代码来生成表格的,你说的哪种方法,必须事先html结构就已经固定好,在需要加入控件的地方添加runat="server",然后服务器会认为这里需要在服务器来生成,就可以动态生成控件了。然而我要的是“html代码和服务器控件同时生成,并且能确定服务器控件的位置”,我查了很多地方的都没能实现
<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对应的条目...
}
}
}
1、对于问题1,LZ矫情了。试问哪个网站,是一个页面通吃所有应用的?还不是各页面都事先植入模版,然后后台再将html组织进各模版。要想一个页面通吃所有应用,嘿嘿,那后台的程序的复杂度不是可以想象的哦。另,LZ为什么就不能放弃全部html后台生成的方法呢?这难道不是对服务器资源与人力的浪费吗?
2、所谓的“html代码和服务器控件同时生成,并且能确定服务器控件的位置”,也可以啊。只不过你用literal来纯自己写的方法用错了而已。你应该用htmlgeneralcontrol来生成每一个html元素(或称htmlcontrol),然后在htmlcontrol中就可以添加控件。这样,既可以把html当后台控件来控制,也可以把.NET控件由后台来控制。