2014-11-21 48 views
0

這很奇怪,我現在正在摸索我的頭幾個小時。我有一個帶文本框的重複器(HTMLInputText),這個文本框將顯示或隱藏取決於數據。我有其中,第一個中繼器項目將顯示此文本框和下一個中繼器項目將隱藏此文本框的情況。我有一個方法,將循環通過中繼器獲取數據,我檢查這個文本框,如果它被發現或不只是爲了指示每個中繼器項目的狀態。問題是,在第二個中繼器項目中,由於它隱藏(display = none),所以不應該找到該文本框,但我仍然發現它,我期望沒有任何價值。檢查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 

我試圖改變文本框的屬性,但是與格被隱藏了相同的結果。

+0

添加顯示/隱藏文本框的代碼。 – 2014-11-21 20:00:08

+0

如果它不是服務器端控件(runat =「server」),則顯示和隱藏真的什麼也不做。如果它對用戶不可見,但仍然在HTML代碼中,那麼它就存在,並且會被找到。 – Jeremy 2014-11-21 20:03:17

+0

剛剛更新我的帖子,帶我,而我需要簡化代碼。 – sd4ksb 2014-11-21 20:22:57

回答

0

在您的For-Each外觀中,不是查看tbx,而是查找具有display = none屬性的對象。

相關問題