我在GridView
中有UpdatePanel
并使用javascript在用户点击展开按钮时切换行的可见性。 GridView
上方有相当多的信息,但我只想更新相应UpdatePanel
中的信息,以便屏幕保持原样,但JavaScript调用会导致整个屏幕刷新窗口跳回到顶部。
我用于GridView
的代码实际上来自CodeProject上的ExtGridView
控件(http://www.codeproject.com/Articles/12299/ExtGridView) - 它会转换asp:TemplateField
的{{1}}在其他项目下面的新行。
我是JavaScript新手,对ASP.NET很新,所以我可能会遗漏一些简单的东西。有没有办法让JavaScript刷新到导致它的相应GridView
?
以下是JavaScript代码:
UpdatePanel
以下是<script type="text/javascript">
//<![CDATA[
function TglRow(ctl)
{
var row = ctl.parentNode.parentNode;
var tbl = row.parentNode;
var crow = tbl.rows[row.rowIndex + 1];
var ihExp = ctl.parentNode.getElementsByTagName('input').item(0);
tbl = tbl.parentNode;
var expandClass = tbl.attributes.getNamedItem('expandClass').value;
var collapseClass = tbl.attributes.getNamedItem('collapseClass').value;
var expandText = tbl.attributes.getNamedItem('expandText').value;
var collapseText = tbl.attributes.getNamedItem('collapseText').value;
if (crow.style.display == 'none')
{
crow.style.display = '';
ctl.innerHTML = collapseText;
ctl.className = collapseClass;
ihExp.value = '1';
}
else
{
crow.style.display = 'none';
ctl.innerHTML = expandText;
ctl.className = expandClass;
ihExp.value = '';
}
}//]]>
</script>
:
GridView
答案 0 :(得分:1)
好好拍摄...再用ExtGridView
代码玩一下,我想出来了。调用javascript的扩展/切换按钮也分配了一个HRef作为链接,因此当它被单击时,它不仅会调用JavaScript,还会像点击链接一样,导致页面刷新。
ExtGridView
:
// ...
else if (RowType == DataControlRowType.DataRow || RowType == DataControlRowType.Footer)
{
_expCell = new TableCell();
_ctlExpand = new HtmlAnchor();
//_ctlExpand.HRef = "#"; -- Commenting this out worked!
_ctlExpand.Attributes["onclick"] = "TglRow(this);";
_ihExp = new HtmlInputHidden();
_ihExp.ID = "e" + this.DataItemIndex.ToString();
_expCell.Controls.Add(_ctlExpand);
_expCell.Controls.Add(_ihExp);
}
if (_expCell != null)
{
_expCell.Width = Unit.Pixel(20);
Cells.AddAt(0, _expCell);
}