禁用" onclick" Gridview LinkBut​​ton中的事件

时间:2015-01-21 15:44:36

标签: c# asp.net

我在gridview中得到了这个模板字段。

 <asp:TemplateField HeaderText="PersonID">
    <ItemTemplate>
            <asp:LinkButton runat="server" ID="BtnPersonDashboard" Text='<%# Bind("PersonId") %>' OnClientClick='<%# "PopupPersonRecord("+ Eval("RefId") +","+Eval("MemberId")+");" %>'  />
    </ItemTemplate>
</asp:TemplateField>

此按钮工作正常,我只需要禁用按钮的回发。我试图在RowDatabound的“Gridview”事件中执行此操作,如下所示:

  protected void MyGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // disable the Person id link button post back
                ((LinkButton)e.Row.Cells[1].Controls[0]).Attributes.Add("onclick", "return false;");

            }
        }

但是,我似乎无法获得对linkbutton的引用。我试图在Debug中“监视”e.Row.Cells[1].Controls[0],它的值显示为“Text = {1235}”&lt; - 我的人员ID。

我不确定为什么我为该控件获得“Text”值而不是“Linkbutton”。任何想法可能是什么问题?对我可以禁用onclick事件的方式的任何其他建议?

3 个答案:

答案 0 :(得分:2)

尝试这样的事情:

if (e.Row.RowType == DataControlRowType.DataRow)
{
    // find the control on the row on gridView
    var btnPersonDashboard = e.Row.FindControl("BtnPersonDashboard") as LinkButton;

    // check if the control was found and disable it
    if (btnPersonDashboard != null)
       btnPersonDashboard.OnClientClick = "return false";
}

答案 1 :(得分:2)

如果您要为LinkBut​​ton禁用回发,只需在 OnClientClick 中添加 return false;

<asp:LinkButton  
    ...
    OnClientClick='<%# "PopupPersonRecord("+ Eval("RefId") +","+Eval("MemberId")+"); return false;" %>'  />

注意: 如果您执行上述方法,请不要在 RowDataBound事件中添加"onclick"

答案 2 :(得分:0)

只需在后面的代码中禁用它。

BtnPersonDashboard.Enabled = false;