我有一个javascript函数来清除我的表单,其中包括gridview,我之前尝试过另一种方法删除没有回发的行,但不知怎的,当我尝试添加一个新行时,所有以前的反弹。也许我正在使用viewstate来维护我的gridview,不太确定但是下面是我正在做的哪个效果不错但不知何故它只删除了一行,我想可能在回发发生时,循环被消灭了。有什么建议?我需要循环来删除所有gridview行。谢谢!
for (i = 0; i < camGv.rows.length; i++) {
window.__doPostBack('ctl00$cphBody$gvCamVoucher', 'Delete$0');
}
答案 0 :(得分:3)
我认为你需要2件事
1-从客户端网格中删除行的方法
2-一种在服务器端进行删除操作的方法,以防您进行任何回发 保持删除状态
1-您可以使用id捕获客户端中的网格视图,并清除其execpt中的所有内容,如果有一个具有此代码的分页的页脚
document.getElementById('grid view id').getElementsByTagName('TBODY').innerHTML='';
如果您没有页脚网格分页器
,这行脚本会删除您的所有行2-你必须进行一次ajax调用才能与服务器联系,并且如果该表有来自数据库的某些东西,我认为你需要一个删除函数来删除数据库中的所有行,如果是只是一个临时表与数据库无关所以我建议把它放在一个Session中,你可以在ajax调用中访问会话
JavaScript
$.ajax({
type: "POST",
//web method path
url: "pageName.aspx/webmethodName",
data: "{action:'delete'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
async: true,
cache: false,
success: function(result)
{
}
,error: function(error)
{
}
});
ASP.NET CS
[WebMethod]
public string DeleteAll(string action)
{
//you have to put the table from the begining where ever you initialize the data on it inside a session
DataTable dt = (DataTable)HttpContext.Current.Session["tbl"];
dt.Rows.Clear();
HttpContext.Current.Session["tbl"]=dt;
}
此致 请问任何问题:)
答案 1 :(得分:0)
感谢您的回答,我清除了代码后面的gridview行,并使用更新面板对网格进行分组,以便回发不会以任何方式影响我的其他字段。