У меня есть кнопка внутри ItemTemplate
моего Listview:Ссылка на объект не указывает на экземпляр объекта на кнопке
<asp:Button ID="EditButton" runat="server" Visible="false" Enabled="false" class="btn btn-sm btn-success" CommandName="Edit" Text="Edit" />
Тогда с моим ItemDataBound
событием для моего Listview у меня есть:
protected void listview_ItemDataBound(object sender, ListViewItemEventArgs e)
{
var btn_edit = e.Item.FindControl("EditButton") as Button;
if(isOwner == false)
{
// code here..
}
else
{
btn_edit.Enabled = true;
btn_edit.Visible = true;
}
}
Кнопка редактирования показывает, когда я загружаю страницу, чтобы она показывала, что работает , но когда я нажимаю на нее, она ломается и дает мне эту ошибку:
Object reference not set to an instance of an object.
Я знаю об этих ошибках, однако я не понимаю, почему я получаю эту ошибку? Особенно, когда он достигает заявления Visible = true;
?
Кто-нибудь знает, что я могу делать неправильно?
PS: кнопка используется для работы, прежде чем я установил Enabled и Visible в коде и в XML
UPDATE: Я сузили ошибку вниз отладки на линии, в случае ItemDataBound это показывает, что btn_edit не является нулевым и показывает значения свойства Text и CommandName, однако, когда я нажимаю на него, он снова проходит через одно и то же событие и на этот раз показывает, что btn_edit имеет значение null. Поэтому, когда я нажимаю на него, когда появляется ошибка
Я подозреваю, что '' btn_edit' является null', поэтому 'FindControl' ничего не возвращает. Поместите контрольную точку сразу после строки «FindControl» и проверьте, действительно ли она «null». –
Если ошибка возникает в событии 'Button_Click', то ошибка находится в коде этого события. –
@JoshPart Как же? Он работал до того, как кнопка была установлена на включенную и видимую. – c0mrade