【发布时间】:2015-06-10 09:10:14
【问题描述】:
我有以下情况:我有一个asp gridview,我已经用javascript实现了行选择(我可以通过单击它的每个单元格来选择一行)。触发的事件是通过 javascript onclick 发生的,我遇到了问题。当我尝试通过行编辑命令编辑该行的内容时,在我单击文本框以关注它的那一刻,再次触发行单击事件并且我失去了文本框的焦点。这样我就有了想要的效果,我可以通过点击任何地方来选择一个网格视图,但是我不能编辑该行的内容。
对后面的代码启用全行选择:
protected void gvMyQuizz_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.ToolTip = "Click to show the questions of the quiz";
e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.gvMyQuizz,"Select$"+e.Row.RowIndex);
}
}
如果我可以创建一个 javascript 函数来检查我被点击的行是否已被选中,那么我可以返回 false,否则 select$row,但我没有在网上找到太多帮助.我需要通过javascript完成这个。任何帮助将不胜感激。
更新
我已更改添加到 onclick 事件行的属性:
protected void gvMyQuizz_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.ToolTip = "Click to show the questions of the quiz";
e.Row.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.gvMyQuizz, "selectRow(" + e.Row.RowIndex+");");
}
}
Javascript:
function selectRow(index) {
var $selected = $("#gvMyQuizz .alt");
if ($selected.length == 0) {
console.log('nothing');
} else if ($selected.length == 1) {
console.log('one');
} else {
console.log('problem');
}
}
单击该行时得到的一个函数,但只触发一次,我不知道为什么:
$("[id*=gvMyQuizz] td").click(function () {
console.log('clicked');
});
是否有人可以弄清楚缺少什么可以帮助解决问题。如果重复点击时触发的功能,我可以通过post检查它是否被选中。
【问题讨论】:
-
在选定的索引更改时会调用此事件。尝试使用它
-
我已经在我的 gridview 上将此事件用于其他目的。你能解释一下你的意思吗?
标签: javascript c# jquery asp.net gridview