我使用ajax在datagrid中实现了可点击的行。问题是,当我单击“结果”页面中的行时,我会重定向到另一个页面以查看数据。在该页面中,我有一个“更新”按钮,我可以更新数据库中表中的数据,当我单击它时,我重定向回结果页面,然后再次单击同一行查看其详细信息,数据不是更新及其旧数据。 问题是,数据正在DB中的表中更新,就像页面保存他带来的旧数据并使用它一样,我不知道如何告诉他带来新数据。
以下是制作可点击行的代码:
protected void pendingGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onclick", "return GetDataUsingAJAX(" + e.Row.RowIndex + ",'pending');");
e.Row.Attributes.Add("style", "cursor:hand");
}
}
这是结果页面的javascript:
function GetDataUsingAJAX(row, table) {
obj = new XMLHttpRequest();
if (obj != null) {
obj.onreadystatechange = RedirectToViewDetails;
obj.open("GET", "Results2.aspx?row=" + row + "&table=" + table, true);
obj.send(null);
}
return false;
}
function RedirectToViewDetails() {
if (obj.readyState == 4) {
if (obj.status == 200) {
var retval = obj.responseText.split("&");
window.location = "YellowCardStart.aspx?mode=" + retval[0] + "&cntct=" + retval[1] + "&strtDate=" + retval[2] + "&endDate=" + retval[3] + "&strtTime=" + retval[4] + "&endTime=" + retval[5] + "&tools=" + retval[6] + "&id=" + retval[7] + "&table=" + retval[8] + "&bldng=" + retval[9] + "&loc=" + retval[10] + "&devTool=" + retval[11] + "&cmpny=" + retval[12] + "&phn=" + retval[13] + "&lssApp=" + retval[14] + "&ehsApp=" + retval[15] + "&cmnts=" + retval[16] + "&created=" + retval[17]; }
else {
alert("Error retrieving data!");
}
}
}
以下是结果的page_load中的代码:
if (Request.QueryString["row"] != null)
{
Response.Clear();
if (Request.QueryString["table"] != null)
{
DataTable dt = new DataTable();
if (Request.QueryString["table"] == "fa")
{
dt = DataAccessLayer.selectFromTable(Int32.Parse(activeFAGrid.Rows[Int16.Parse(Request.QueryString["row"])].Cells[0].Text), "active");
Response.Write(dt.Rows[0][1].ToString() + "&" + dt.Rows[0][2].ToString() + "&" + dt.Rows[0][3].ToString() + "&" + dt.Rows[0][4].ToString() + "&" + dt.Rows[0][5].ToString() + "&" + dt.Rows[0][6].ToString() + "&" + dt.Rows[0][7].ToString() + "&" + dt.Rows[0][0].ToString() + "&" + "active" + "&" + dt.Rows[0][8].ToString() + "&" + dt.Rows[0][9].ToString() + "&" + dt.Rows[0][10].ToString() + "&" + dt.Rows[0][11].ToString() + "&" + dt.Rows[0][12].ToString() + "&" + dt.Rows[0][13].ToString() + "&" + dt.Rows[0][14].ToString() + "&" + dt.Rows[0][15].ToString() + "&" + dt.Rows[0][16].ToString());
}
Response.End();
}
}
SelectFromTable函数从数据库中检索数据。
帮助将非常适合我,我真的迷失了。
提前致谢,
格雷格
答案 0 :(得分:1)
我想您会发现您的浏览器正在缓存您的AJAX调用的响应,尝试使用POST代替GET进行AJAX调用。
答案 1 :(得分:0)
只是为了让你知道,它使用“POST”,但我必须删除这两行才能使它工作:
obj.setRequestHeader("Content-length", params.length);
obj.setRequestHeader("Connection", "close");
(也许只删除第二行就足够了)