目前,我在RowDataBound中有以下代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Label groupID = (Label)e.Row.FindControl("idgroup");
LinkButton myLink = (LinkButton)e.Row.FindControl("groupLink");
myLink.Attributes.Add("rel", groupID.Text);
}
}
但是,当我单击“编辑”链接时,它会尝试运行该代码并引发错误。因此,如何在GridView处于读取模式时运行该代码?但不是在编辑时......
答案 0 :(得分:7)
这是怎么做的!除了正在编辑的行外,它只会在行上执行代码(在读取或编辑模式时)!
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if ((e.Row.RowState == DataControlRowState.Normal) || (e.Row.RowState == DataControlRowState.Alternate))
{
Label groupID = (Label)e.Row.FindControl("idgroup");
LinkButton myLink = (LinkButton)e.Row.FindControl("groupLink");
myLink.Attributes.Add("rel", groupID.Text);
}
}
}
答案 1 :(得分:6)
您可以添加如下支票:
if (e.Row.RowState != DataControlRowState.Edit)
{
// Here logic to apply only on initial DataBinding...
}
答案 2 :(得分:2)
添加e.Row.RowState
的检查:
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
{
//In Edit mode
}
答案 3 :(得分:2)
Davide的回答几乎是正确的..但是对于替代行会失败。这是正确的解决方案:
if (e.Row.RowType == DataControlRowType.DataRow && e.Row.RowState != DataControlRowState.Edit && e.Row.RowState != (DataControlRowState.Edit | DataControlRowState.Alternate))
{
// Here logic to apply only on rows not in edit mode
}
答案 4 :(得分:0)
在你的gridview中, 搜索OnrowDataBound事件,它将使用OnrowDataBound =“GridView1_RowDataBound”删除该代码并禁用上述代码。