这很奇怪,我现在几个小时都在挠头。我有一个带文本框的转发器(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被隐藏了同样的结果。
答案 0 :(得分:0)
在你的For-Each外观中,不是看tbx并不是什么,而是找一个属性为display = none的人。