【发布时间】:2017-06-13 07:07:27
【问题描述】:
出于某种原因,我必须单击两次才能激活/停用用户。显然我不想那样,一键就够了。我在这里做错了什么?
(我猜是AJAX调用有问题)
C#:
var toggleUrl = "AdminListUsers.aspx?column=" + (IsClicked.FirstOrDefault().Key ?? "Name") + "&direc=" + (IsClicked.FirstOrDefault().Value) + "&a=chstat&q=" + id.ToString() + "&d=" + disabled + "&z=" + Server.UrlEncode(txtSearchFor.Text);
var hl = new HyperLink();
hl.Text = status;
hl.Style.Add(HtmlTextWriterStyle.Color, (disabled ? "red" : "green"));
hl.NavigateUrl = toggleUrl;
hl.Attributes.Add("onclick", "loadDoc();return true;"); //Calling the function here
cell.Controls.Add(hl);
tr.Cells.Add(cell);
cell = new TableCell();
cell.Width = new Unit("10%");
cell.Controls.Add(new LiteralControl("<nobr>"));
var linkbtn = new HyperLink
{
NavigateUrl = toggleUrl,
Width = 16,
Height = 16,
CssClass = disabled ? "user-status-disabled" : "user-status-enabled"
};
linkbtn.Attributes.Add("id", "aButton_" + id);
linkbtn.Attributes.Add("onclick", "loadDoc();return true;"); //Calling the function here
cell.Controls.Add(linkbtn);
cell.Controls.Add(new LiteralControl(" "));
JavaScript:
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState === 4 && this.status === 200) {
window.scrollTo(window.pageXOffset, window.pageYOffset);
window.location.reload();
}
};
xhttp.open("GET", "AdminListUsers.aspx?column=Disabled&direc=False&a=chstat&z=+", true);
xhttp.send();
$('.TellusAlternatingRowColor').load(document.URL + ' .TellusAlternatingRowColor');
}
【问题讨论】:
-
XMLHttpRequest是异步的。您确定不是在您第一次点击后再次点击时才解决? -
你说得对。我必须刷新页面才能看到更新的数据!我希望它有一种方法可以自行完成......因为你我实际上是在对 DataTable 进行排序,所以如果我刷新整个页面,我不得不求助于它,我猜这并不是那么理想。
-
我想我会回复这个帖子的。
-
您是否检查过是否从该 onclick 事件中删除返回 true 只是尝试像 hl.Attributes.Add("onclick", "loadDoc();");并在 linkbtn.Attributes.Add("onclick", "loadDoc();");
-
@BibyAugustine 是的,我试过没有成功。
标签: javascript c# asp.net