我的网页上有一个隐藏字段
<input runat="server" type="hidden" id="selectedIndex" />
它是由这一堆代码设置的,一个onclick事件到gridview的行:
var gridViewCtlId = '<%=GridView.ClientID%>';
var selectedIndex = '#<%=selectedIndex.ClientID%>';
var itemVisible = '<%=ItemVisible.ClientID%>';
var gridViewCtl = null;
var curSelRow = null;
var previousRowIndx = null;
window.onload = function showQuery()
{
if ($(selectedIndex).val() != undefined)
{
if ($(selectedIndex).val() != '')
{
var prevRowID = $(selectedIndex).val();
var prevRow = getSelectedRow(prevRowID);
prevRow.style.backgroundColor = '#1A8CD4';
}
}
}
function getGridViewControl(rowIdx)
{
if (gridViewCtl == null)
{
gridViewCtl = document.getElementById(gridViewCtlId);
}
}
function onGridViewRowSelected(rowIdx)
{
if (document.getElementById(gridViewCtlId).disabled == false)
{
var selRowCCA = getSelectedRow(rowIdx);
if (curSelRow != null)
{
var previousRow = getSelectedRow(previousRowIndx);
var CountIdx = previousRowIndx % 2;
if (document.getElementById(itemVisible) == null)
{
if (CountIdx == 0)
{
previousRow.style.backgroundColor = 'Silver';
}
else
{
previousRow.style.backgroundColor = 'White';
}
}
}
if (null != selRow)
{
previousRowIndx = rowIdx;
curSelRow = selRow;
selRow.style.backgroundColor = '#1A8CD4';
}
}
}
function getSelectedRow(rowIdx)
{
getGridViewControl(rowIdx);
if (gridViewCtl != null)
{
$(selectedIndex).val(rowIdx);
return gridViewCtl.rows[rowIdx];
}
return null;
}
这是发生的事情:当页面首次加载时,隐藏字段是未定义的,它应该是。当我点击一行然后单击“选择”按钮然后调用它:
GridView.Attributes.Add("disabled", "true");
网格视图被禁用(连同选择按钮)并且出现另一个网格视图(这应该取决于第一个网格视图中选择的内容)。所以现在,这就是问题所在。当我点击gridview中的一行时(我只是谈论初始的gridview,而不是第二个出现的gridview,这不是问题),点击选择,一切都变得灰暗,大部分时间,所选行将在页面加载时突出显示(其他时间由于某种原因它默认为第2行)。然后,假设您单击第4行然后单击第1行然后单击选择,由于某种原因,第4行将保持突出显示,第4行的数据将填充第二个网格视图,就像您从未单击第1行一样。但是如果我单击第4行然后单击第1行,然后再次单击第1行,它是否保存。有谁知道为什么会这样?
此外,我正在尝试在select选中时禁用第一个gridview,所以我
GridView.Attributes.Add("disabled", "true");
而不是
GridView.Enabled = false;
如果用户重新点击搜索按钮(之前位于页面上的另一个按钮,使该网格视图变得可见),我希望辅助网格视图变为隐藏状态,并且主网格视图(这个有问题)将成为重新启用。但是做了
GridView.Attributes.Add("disabled", "false");
当触发搜索按钮时,仅禁用gridview,这非常奇怪。现在我知道除IE以外的任何其他浏览器都不支持禁用字段,我只使用它,因为我需要检查gridview是否被禁用,以便用户在选择后不能点击另一行(发生这种情况)如果我不这样做:
if (document.getElementById(gridViewCtlId).disabled == false)
那么有谁能让我知道完成这项任务的另一种方式?再次感谢。
答案 0 :(得分:1)
关于禁用的一些信息:
另请参阅如何与只读进行比较:http://www.w3.org/TR/html401/interact/forms.html#h-17.12.2
另请注意,根据标准,其支持仅限于某些要素。这很重要,因为您在不受支持的html元素上应用它,这也可能是因为它无法在您的方案中的其他浏览器中运行。您可以使用脚本禁用支持的控件,获取控件以应用它,如$ get(“someClientID”)。getElementsByTagName(“input”);