访问 ListView 编辑命令上的控件

2023-12-28

In my ListView我有一个ItemTemplate and EditItemTemplate分别看起来像这样。

enter image description here -------> enter image description here

当我单击“编辑”按钮时,它切换到EditItemTemplate查看右侧,我想预填充Textbox并选择对应的option in the DropDownList。我怎样才能做到这一点?

在您说使用类似以下内容之前,请知道我已经探索了我能想到的所有可能的变体。抱歉要求如此之高,但如果您回答,请准备好引导我完成这一过程。 ^.^ 我在这个问题上已经被困了好几个月了:(

Dim lv As ListView = DirectCast(sender, ListView) 'sender is the ListView on the ItemCommand event
Dim ddl As DropDownList = DirectCast(lv.Items(0).FindControl("NewProductName_ddl"), DropDownList)
Dim tb As TextBox = DirectCast(lv.Items(0).FindControl("NewProductName_tb"), TextBox)

更新 - RAWR!

哦,天哪,这么近,但没有雪茄。当 ListView 中只有一个项目时,以下代码适用于预填充,但是当存在多个项目时,它会抛出空引用异常 :(

'PROBLEM WAS HERE: Compare to the working code in my answer.
Protected Sub NewProduct_ItemDataBound(ByVal sender As ListView, ByVal e As ListViewItemEventArgs) Handles NewProduct.ItemDataBound
    If sender.EditIndex > -1 Then
        Dim ddl As DropDownList = DirectCast(e.Item.FindControl("NewProductName_ddl"), DropDownList)
        Dim tb As TextBox = DirectCast(e.Item.FindControl("NewProductName_cb"), TextBox)

        ddl.Items.FindByValue(sender.DataKeys(sender.EditIndex)("ID").ToString).Selected = True 'Prefills the DropDownList
        tb.Text = sender.DataKeys(sender.EditIndex)("Product").ToString 'Prefills the TextBox
    End If
End Sub

EUREKA!!

我高兴得超乎想象!!全部大写,也不加粗,都无法体现我现在有多高兴:)

首先我想给道具这个问题 https://stackoverflow.com/questions/825048/accessing-controls-in-the-edititemtemplate-of-a-listview这让我指明了正确的方向。现在来看答案,这是我发现的上述链接中提供的答案的最理想的变体:

The ItemDataBound事件是关键,但重要的是要注意,此事件将为您中存在的每个项目触发ListView因此,你必须小心行事。这里有两个对我同样有效的选择。

Option 1- 最优雅;仅对有问题的项目而不是所有项目运行 FindControl。

Protected Sub NewProduct_ItemDataBound(ByVal sender As ListView, ByVal e As ListViewItemEventArgs) Handles NewProduct.ItemDataBound
    Dim i As Integer = sender.EditIndex
    If i = e.Item.DataItemIndex Then
        Dim ddl As DropDownList = DirectCast(e.Item.FindControl("NewProductName_ddl"), DropDownList)
        Dim tb As TextBox = DirectCast(e.Item.FindControl("NewProductName_cb"), TextBox)

        ddl.Items.FindByValue(sender.DataKeys(i)("ID").ToString).Selected = True 'Prefills the DropDownList
        tb.Text = sender.DataKeys(i)("Product").ToString 'Prefills the TextBox
    End If
End Sub

Option 2- 基于引用的问题,但进行了关键检查以确保非空对象。

Protected Sub NewProduct_ItemDataBound(ByVal sender As ListView, ByVal e As ListViewItemEventArgs) Handles NewProduct.ItemDataBound
    Dim i As Integer = sender.EditIndex
    If i > -1 Then
        Dim ddl As DropDownList = DirectCast(e.Item.FindControl("NewProductName_ddl"), DropDownList)
        Dim tb As TextBox = DirectCast(e.Item.FindControl("NewProductName_cb"), TextBox)

        If Not IsNothing(ddl) Then
            ddl.Items.FindByValue(sender.DataKeys(i)("ID").ToString).Selected = True 'Prefills the DropDownList
        End If
        If Not IsNothing(tb) Then
            tb.Text = sender.DataKeys(i)("Product").ToString 'Prefills the TextBox
        End If
    End If
End Sub

我稍后可能会改进这个答案,但这对我有用。 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

访问 ListView 编辑命令上的控件 的相关文章

随机推荐

  • postgresql - 替换文本字段中字符串的所有实例

    在 postgresql 中 如何替换数据库列中字符串的所有实例 假设我想替换所有实例cat with dog 例如 最好的方法是什么 你想使用 postgresql 的replace http www postgresql org doc
  • Ant 任务

    我现在看到 Ant 既有
  • 如何访问iOS中的弱链接框架?

    我想在 iOS 5 上使用 Twitter 框架 但能够在旧操作系统中运行我的应用程序 我在 Xcode 4 2 Target 设置中添加了弱引用框架 即设置 可选 标志 基础 SDK 是 iOS 5 iOS 部署目标是 iOS 3 2 接
  • 如何将第三方 npm 包与 ember cli 应用程序一起使用

    EDIT 这实际上是关于任何不适合与 ember 一起使用的 npm 包 就我而言 我尝试让 crypto js 工作 但对于任何不是专门为 ember cli 设计的 npm 包来说 似乎总是遇到同样的问题 我想在我的 ember 应用程
  • Python 错误代码已升级

    考虑一个 python 脚本 error py import sys sys exit 3 Invoking python error py echo 产生预期的 3 但是 考虑 runner py import os result os
  • 在 Android 应用程序中使用个人证书

    我希望用户能够在从生成证书的网站安装后将他们自己的个人证书安装到我的 Android 应用程序中 但是当我使用 WebClient 或 Android 浏览器浏览它时 安全存储会弹出并安装它 在版本 14 Android 4 0 之前 AP
  • 带返回值的动态 Linq 表达式

    我需要创建一个动态 linq 表达式 然后我开始使用许多示例 我测试了一些工作 有些没有 在这种情况下 我想创建一个如下所示的方法 public bool Check int intvar if i gt 2 return true els
  • Laravel 4:调用未定义的方法 Redis::connection()

    我对这个错误快要疯了 我有一个 Debian 7 的 vagrant VM 用 Puphpet 生成 安装得很好 1 Redis已安装并运行 redis server在跑 我可以使用服务器127 0 0 1 6379 2 安装php5 re
  • Code First:Fluent api 会影响 UI 吗?

    我正在读 Julie Lerman 写的一本关于 Code First 的书 根据这本书 注释和 Fluent api 给出相同的结果 一切都取决于开发人员的风格 我知道注释允许配置代码如何首先生成数据库对象以及 MVC 如何自定义 UI
  • 点击事件后关闭汉堡菜单

    我有一个汉堡菜单 几乎完整 只有 1 个我无法弄清楚的错误 问题 我的导航链接到主页上的不同区域 因此 在主页上 用户可以单击导航链接 这将立即将他们带到页面上的所需位置 我的问题是因为没有加载 所以一旦用户单击导航链接 他们就会被带到该位
  • 使用 secure_random 在 rspec 中存根随机值

    我正在尝试为我的 gem 编写规范 它生成 otp 并将其保存在数据库中 现在我正在为其编写规格 所以基本上我有三种方法generate otp regenerate otp verify otp otp what generate otp
  • angular2 TypeError:无法设置未定义的属性“名称”

    我有一个 Angular2 项目 在 Mac OS 上创建并运行 但是当我在Windows上git它时 它无法运行 在 Chrome 中 我收到此错误 core umd js 3491 EXCEPTION Uncaught in promi
  • 使用 fillcolor 节点增强 BGL write_graphviz make_label_writer

    我想用自定义颜色填充某些节点的颜色 那么图形的顶点属性中是否有自定义属性设置或重新实现自定义函子 make edges writer include
  • Kubernetes 部署和初始化容器

    I 最近学到的 https stackoverflow com questions 44233242 kubernetes cluster and phoenix automate mix ecto migrate 44233465 442
  • ContentPlaceHolders:重复内容

    Scenario 我有一个使用 asp net 母版页的应用程序 我想在其中重复页面顶部和底部的一些内容 目前我使用这样的东西 Master Page
  • 针对安全的 AWS ElasticSearch 进行搜索

    我在 AWS 上设置了一个新的 ElasticSearch 集群 该集群仅允许特定 IAM 用户访问 然而 我尝试从 Ruby 连接到此 并考虑使用 AWS SDK 但它没有实际对 ES 集群进行 HTTP 操作的方法 只能访问配置 API
  • 使用 SOQL 查询 Salesforce 对象列名称

    我在 Salesforce 实例和 S3 存储桶之间的 SnapLogic 集成中使用 Salesforce SOQL 管理单元 我尝试在 Salesforce SOQL 快照字段 SOQL 查询 中使用 SOQL 查询来返回对象的列名称
  • 具有整数值的 NSDictionary

    我正在开发一款与怪物有关的游戏 每个都有一个统计数据列表 这些统计数据都是整数 我可以将每个统计数据设置为它自己的变量 但我更愿意将它们保存在 NSDictionary 中 因为它们都是相关的 当我尝试更改每个统计数据的值时遇到问题 我拥有
  • 正则表达式查找字符串中的一系列大写单词

    text This is a TEXT CONTAINING UPPER CASE WORDS and lower case words This is a SECOND SENTENCE pattern A Z A Z A Z s re
  • 访问 ListView 编辑命令上的控件

    In my ListView我有一个ItemTemplate and EditItemTemplate分别看起来像这样 gt 当我单击 编辑 按钮时 它切换到EditItemTemplate查看右侧 我想预填充Textbox并选择对应的op