- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我希望有人能帮我解决这个问题。我无法在 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/
我有一个下拉列表: 一个可爱的小家伙。我有一些代码可以找到它: DropDownList myControl1 = (DropDownList)Page.FindC
我有一个列出客户项目的中继器,其中一个是用于获取更多信息的按钮。当用户单击该按钮时,用户控件会立即出现在它的下方。我希望用户控件在再次单击按钮时关闭。我最初切换可见性服务器端,但我现在不能使用它,因为
我的页面,Default.aspx 继承自 BasePage.cs。 在基本页面中,我试图找到实际上位于 Default.aspx 中的控件 Label1。 var labelControl = (T
我正在处理一个继承基页的页面。 aspx 页面包含一个控件,该控件使用 xslt 将 xml 文档转换为 html 标记。在该文档中,我使用了以下内容: 我正在尝
我正在设置一个 GridView ,以便我可以选择多个事件并将它们的 EventID 添加到逗号分隔的字符串中。这将是一项订阅服务,因此我需要知道用户想要订阅哪些事件。 我使用模板字段添加了一个复选框
示例代码: var div = new HtmlGenericControl("div"); div.Controls.Add(new Literal() { ID = "litSom
在一个网站上,我只使用一个单一级别的母版页,在使用该母版的页面中,我可以这样做。Master.FindControl("controlName") 来访问控件。工作正常。 但是,在具有两个母版页级别的
我想在 DDL OnSelectedIndexChanged 事件之后在 griview 上找到控制。其中目标控件位于 DDL 所在的行索引上。 这是我的代码; protected void Page
出现以下错误 找到具有相同ID'ltlItemCode'的多个控件。 FindControl要求控件具有唯一的ID。 在页面加载时不会发生此错误,但是当我更改具有AutoPostBack =“true
在 page_Init 上,我创建了许多 UpdatePanel,并在这些 UpdatePanel 中创建了一个 Panel 。然后,我使用此面板进一步动态添加其他控件。例如,我在每个面板中添加了一些
我在面板内有一个中继器。 在这个中继器内我有另一个面板。在某些情况下,我想设置这个 panel.visibility = false。 在后面的代码中,我尝试在 OnItemDataBound 上找到
我有一个在页面加载时动态加载的用户控件: protected void Page_Load(object sender, EventArgs e) { MyControl ctl = (MyC
我有多个文本框,我想用相同的方法以编程方式填充它们。 ">
我有一个绑定(bind)到 DropDownList 的 GridView。当 DropDownList 的索引更改时,GridView 由 SQL 查询更新。 GridView 的单元格中的值被转换
两个异常(exception): 索引越界 FindControl 返回 null(假装或未检测到控件) cs 代码:(现在下拉列表只需要在编辑模式下填充) protected void GridVi
我有一个 Literal 控件,我正试图找到它以便我可以在其中插入文本。我有一个包含多个内容占位符的母版页。 Project Navigation 我不断收到“对象引用未设置到对象的
我有两种方法。第一个动态创建一个表,然后将该表添加到 PlaceHolder 中。 private void generateData(){ Table tbl = new Table();
我现在知道通常您可以使用以下方法获取文本输入的值: txtName.Text 但是因为我的输入是在 LoginView 内部,所以我使用 FindControl 是这样的: LoginView1.Fi
我正在尝试根据相关文本框来控制按钮状态。除前缀外,名称相同。文本框和按钮位于页面上的表格中。
我开发了一个网络仪表板,它具有嵌入控件内部的控件结构。在许多情况下,我有一个控件的 ID,需要处理实际的控件对象。因此,我使用了一个实用方法,一个递归的 FindControl 实现,它在 Page(
我是一名优秀的程序员,十分优秀!