【问题标题】:Placing the same ASP.NET control in different areas of a page在页面的不同区域放置相同的 ASP.NET 控件
【发布时间】:2024-04-28 10:50:01
【问题描述】:

我有一些我继承的代码,它不是世界上最好的,但它可以工作,除了一个小例外:

此页面是目录搜索,它有由记录 ID 标识的控件,但是存在可能存在多个具有相同记录 ID 的结果的情况,从而使 .NET 失败。我最初实施了一项检查,只是没有将控件放在页面上,如果它已经存在的话,但我们收到了负面反馈。

我的问题是:有没有办法一次将相同的控件放在两个地方,例如,如果用户选中一个,则相应的也检查?我不太熟悉 .NET 的行为方式,但如果需要,我会尝试提供尽可能多的额外上下文。

编辑:这是通过循环结果数据表生成控件的更新代码

Dim cbxSendInfo As CheckBox
Dim strCheckboxID As String = "cbxSendInfo-" & drOrganizer("ID") & "-" & i
Debug.text = Debug.text & "&nbsp;&nbsp;&nbsp;&nbsp;Loading Checkbox (" & strCheckboxID & ")...<br />"

cbxSendInfo = New CheckBox
cbxSendInfo.ID = strCheckboxID
cbxSendInfo.enableViewState = true

下面是查找控件并构建联系人列表的代码:

Dim strCheckboxID As String = "cbxSendInfo-" & drOrganizer("ID") & "-" & i          
Dim cbxSendInfo As CheckBox = Me.tblResults.FindControl(strCheckboxID)

If cbxSendInfo.Checked Then
    alOrganizers.Add(drOrganizer("ID"))
End If

其中 drOrganizer("ID") 为记录 ID,i 为结果记录号。

至少从我的背景来看,我知道这是一种糟糕的做法,但就像我说的,这是被黑客入侵的继承代码。

【问题讨论】:

  • 您使用的是什么类型的数据绑定控件?
  • 我正在使用复选框控件。基本上,我有一个结果集,可能包含“重复”结果,相同的记录 ID,但不同的地址数据。我不是使用 findcontrol 来获取这些控件,查看它们是否被选中,然后通过电子邮件发送相关记录。

标签: asp.net vb.net user-controls duplication


【解决方案1】:

您只能通过 JavaScript

执行此操作

【讨论】:

  • 我就是这么想的。如果可能的话,我想避免这种情况。我正在寻找使这些标识符唯一的方法,这样我的 FindControl 调用仍然可以运行。
【解决方案2】:

我想我已经设法产生了我想要的结果,我有一个用于两个条目的复选框,它们不会相互切换,但这没关系。我能够将结果行号附加到复选框 ID。

【讨论】:

    【解决方案3】:

    您可以有重复的结果,但如果记录 ID 是关键,那么就有问题了。另外,我不明白控制 ID 与记录 ID 有什么关系;代码示例可能会有所帮助:-)

    【讨论】:

      最近更新 更多