gpt4 book ai didi

c# - ListView 中的 FindControl (ImageButton)

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:14 24 4
gpt4 key购买 nike

我希望有人能帮我解决这个问题。我无法在 ListView 中找到 ImageButton 控件,它总是给我未设置对象实例的对象引用错误。

场景是,如果我选中复选框,我希望图像按钮更改其图像。 Checkbox 不驻留在 Listview ItemTemplate 中。这是我为 checkbox_checkchanged 事件隐藏的代码:

   if (cb.Checked)
{
foreach (Control c in lv.Controls)
{
ImageButton btndel = (ImageButton)c.FindControl("btnDelete");
btndel.ImageUrl = "~/images/activate.png";
}
}

注意:我使用 ForEach 循环认为 btnDelete 按钮在我的 ListView 中出现了几次。

最佳答案

如果 Checkbox 在 ListView 之外,最好的方法是使用 ListView 的 ItemCreated-Event :

protected void LV_ItemCreated(object sender, ListViewItemEventArgs e)
{
// Retrieve the current item.
ListViewItem item = e.Item;

// Verify if the item is a data item.
if (item.ItemType == ListViewItemType.DataItem && cb.Checked)
{
ImageButton btndel = (ImageButton)item.FindControl("btnDelete");
btndel.ImageUrl = "~/images/activate.png";
}
}

您不需要处理复选框的 CheckedChanged-Event,只需在您的 aspx 标记上添加 OnItemCreated-handler:

<asp:ListView ID="LV" OnItemCreated="LV_ItemCreated" ... />

通过这种方式,您可以防止 ListView-Items 的多次迭代。 ItemCreated 无论如何都会在每次回发时隐式调用以重新创建 ListView-Items。

关于c# - ListView 中的 FindControl (ImageButton),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7154084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com