我在ASP.net网络应用程序中生成了一个表。该表有4列。目前,可以单击每行的每个单元格以获取更详细的信息。但是,我不希望每行中的第一个和最后一个单元格是可单击的。如何才能使它只能点击第一个第二个和第三个单元?
下面是一些代码(来自.cs文件):
if(e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.BackColor = TRADER_BACKCOLOR;
e.Row.Cells[0].Font.Bold = true;
e.Row.Attributes.Add("onmouseover", "style.backgroundColor = 'Silver'");
e.Row.Attributes.Add("onmouseout", "style.backgroundColor = '" + TRADER_HEX + "'");
e.Row.Attributes.Add("onclick", "RowClick(this, '" + e.Row.Cells[0].Text + "');");
来自.aspx文件:
function RowClick(caller, id)
{
if(document.getElementById(id).style.display == "block")
{
if(last != "" && parent == id)
{
HideDetailed();
}
document.getElementById(id).style.display = "none";
}
else
{
document.getElementById(id).style.display = "block";
}
}
答案 0 :(得分:1)
你必须事先知道你绑定桌子的数量,以便工作。
// minus one since the RowIndex is 0-based
int total = whateverYouAreBindingTo.Count - 1;
然后在您的活动中或您添加OnClick事件的任何地方...
if (e.Row.RowIndex > 0 && e.Row.RowIndex < total)
e.Row.Attributes.Add("onclick", "RowClick(this, '" + e.Row.Cells[0].Text + "');");
答案 1 :(得分:0)
我不会添加您不想点击的行的属性,例如:
if(e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.BackColor = TRADER_BACKCOLOR;
e.Row.Cells[0].Font.Bold = true;
e.Row.Attributes.Add("onmouseover", "style.backgroundColor = 'Silver'");
e.Row.Attributes.Add("onmouseout", "style.backgroundColor = '" + TRADER_HEX + "'");
if (e.Row.RowIndex != 0 && e.Row.RowIndex != yourGridView.Rows.Count - 1)
{
e.Row.Attributes.Add("onclick", "RowClick(this, '" + e.Row.Cells[0].Text + "');");
}