asp.net(C#)repeater控件问题
repeater控件里面绑定了两个内容一个是checkbox的value和图片img的src在page_load的加载事件绑定然后我在外面弄了一个删除按钮删除按钮里面的代...
repeater控件里面绑定了两个内容 一个是checkbox的value和图片img的src
在page_load的加载事件绑定 然后我在外面弄了一个删除按钮删除按钮里面的代码就是遍历repeater里面的checkbox是否被选中,如果选中的 就删除所对应的图片(可以多张的),可是如果点击了按钮(服务器端的)他就会刷新了页面。刷新页面的话repeater控件就会重新绑定一次,checkbox的checked属性就会全部恢复默认的false
如果把绑定事件放在!ispostback下面 则点击之后数据没有绑定。遍历不到checkbox。该怎么办 或者有什么其他方法实现批量删除图片。
我的图片路径保存在数据库 展开
在page_load的加载事件绑定 然后我在外面弄了一个删除按钮删除按钮里面的代码就是遍历repeater里面的checkbox是否被选中,如果选中的 就删除所对应的图片(可以多张的),可是如果点击了按钮(服务器端的)他就会刷新了页面。刷新页面的话repeater控件就会重新绑定一次,checkbox的checked属性就会全部恢复默认的false
如果把绑定事件放在!ispostback下面 则点击之后数据没有绑定。遍历不到checkbox。该怎么办 或者有什么其他方法实现批量删除图片。
我的图片路径保存在数据库 展开
4个回答
展开全部
删除按钮去掉onclick,加个 OnClientClick ="javascript:deleteitem()
check写成 <input type="check" name="dl_checkitem" itemid='<%# Eval("ID") %>' /> //
在页面上添加
<input type='hidden' id='dl_action' name='dl_action' />
<input type='hidden' id='dl_item' name='dl_item' />
<srcipt>
function deleteitem() {
var selected = document.getElementsByName("dl_checkitem");
var ids = "";
for (var i = 0; i < selected.length; i++) {
if (selected[i].checked) {
ids += selected[i].getAttribute("itemid")+‘,’;
}
}
if (ids == "")
alert("请选择需要删除的项");
else {
document.getElementById('dl_item').value = ids;
submitAction('delete');
}
}
function submitAction(actn) {
document.getElementById('dl_action').value = actn;
document.forms[0].action = '';
document.forms[0].submit();
}
</script>
cs中:
if (IsPostBack)
{
string action = Request.Form["dl_action"];
if (action == "delete")
{
string id = Request.Form{"dl_item"]; //id就是那个字符串
}
}
另外还要加上这个
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
}
至于为什么,自己看书去
上面多数代码是手敲,难免有错,有错在问吧,饿了,吃饭了
check写成 <input type="check" name="dl_checkitem" itemid='<%# Eval("ID") %>' /> //
在页面上添加
<input type='hidden' id='dl_action' name='dl_action' />
<input type='hidden' id='dl_item' name='dl_item' />
<srcipt>
function deleteitem() {
var selected = document.getElementsByName("dl_checkitem");
var ids = "";
for (var i = 0; i < selected.length; i++) {
if (selected[i].checked) {
ids += selected[i].getAttribute("itemid")+‘,’;
}
}
if (ids == "")
alert("请选择需要删除的项");
else {
document.getElementById('dl_item').value = ids;
submitAction('delete');
}
}
function submitAction(actn) {
document.getElementById('dl_action').value = actn;
document.forms[0].action = '';
document.forms[0].submit();
}
</script>
cs中:
if (IsPostBack)
{
string action = Request.Form["dl_action"];
if (action == "delete")
{
string id = Request.Form{"dl_item"]; //id就是那个字符串
}
}
另外还要加上这个
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
}
至于为什么,自己看书去
上面多数代码是手敲,难免有错,有错在问吧,饿了,吃饭了
展开全部
if (!Page.IsPostBack) {
绑定
}
绑定
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为 checkbox 在没开启autopost的时候只是个前台控件,所以在后台不会这样,建议在前台 JS获取,然后传到后台,AJAX可以,另外放在hidden里面也可以。对不?
不行就+QQ吧,382155489
不行就+QQ吧,382155489
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
checkbox也用asp.net的就好了,只要选中了,就算刷新也不会把数据丢掉,这就是html的控件和asp.net控件的最大区别。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询