我在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
事件的方式的任何其他建议?
答案 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)
如果您要为LinkButton禁用回发,只需在 OnClientClick 中添加 return false;
<asp:LinkButton
...
OnClientClick='<%# "PopupPersonRecord("+ Eval("RefId") +","+Eval("MemberId")+"); return false;" %>' />
注意: 如果您执行上述方法,请不要在 RowDataBound事件中添加"onclick"
。
答案 2 :(得分:0)
只需在后面的代码中禁用它。
BtnPersonDashboard.Enabled = false;