转发器内的文本框虽然隐藏了它仍然被发现,为什么?

时间:2014-11-21 19:57:04

标签: vb.net textbox repeater html-input

这很奇怪,我现在几个小时都在挠头。我有一个带文本框的转发器(HTMLInputText),这个文本框将显示或隐藏取决于数据。我的情况是,第一个转发器项目将显示此文本框,下一个转发器项目将隐藏此文本框。我有一种循环通过转发器获取数据的方法,如果找到它,我会检查此文本框,或者只是为了指示每个转发器项目的状态。问题是,在第二个中继器项目中,由于隐藏了文本框(显示=无),因此我找不到文本框,我仍然没有找到它,我希望没有任何价值。检查html标记,未按预期找到隐藏的文本框。为什么我为什么一无所获?返回的是{value =" 0"},它实际上是文本框的初始值。请不要告诉我将文本框更改为asp:textbox。

For each rptItem As RepeaterItem in repeater.Items
  dim tbx As HtmlInputText = rptItem.FindControl("tbxPrice")
  If tbx isNot Nothing Then
     'process here
  Else
     'another process
  End If
Next

我实际上正在获取转发器中其他项目的正确数据。

编辑:附加代码 HTML:

<div id="divTargetPrice" runat="server" visible="false">
  <input type="text" id="tbxPrice" runat="server" pattern="^\d+(?:\.\d\d?)?$" title="Valid amount in decimal number format (sample: 25.00)."
              value='<%#DataBinder.Eval(Container.DataItem, "Price", "{0:f2}")%>' />
</div>

方法:

Protected Sub repeater_ItemDataBound(sender As Object, e As RepeaterItemEventArgs) Handles repeater.ItemDataBound
  dim strRptItem = e.Item.DataItem("RangePrice").ToString
    Dim txtbox As New HtmlInputText
    If String.IsNullOrEmpty(strRptItem) Then
      e.Item.FindControl("divTargetPrice").Visible = True
    Else
      'e.Item.FindControl("divTargetPrice").Visible = False
      txtbox = e.Item.FindControl("tbxPrice")
      txtbox.Attributes.Add("display", "none")
    End If
  End If
End Sub

我尝试更改文本框的属性,但是div被隐藏了同样的结果。

1 个答案:

答案 0 :(得分:0)

在你的For-Each外观中,不是看tbx并不是什么,而是找一个属性为display = none的人。

相关问题