2010-12-01 41 views
3

我正在循環訪問一組控件,並且需要知道哪些控件最終用戶有能力(通過JavaScript或直接)更改回傳的值。我在哪裏可以找到這樣的清單?如何判斷控件或控件界面是否可由用戶編輯?

到目前爲止,我有這樣的:

Private Function IsEditableControl(ByVal control As Control) As Boolean 
    Return TypeOf control Is IEditableTextControl _ 
    OrElse TypeOf control Is ICheckBoxControl _ 
    OrElse GetType(ListControl).IsAssignableFrom(control.GetType()) _ 
    OrElse GetType(HiddenField).IsAssignableFrom(control.GetType()) 
End Function 

回答

3

我相當肯定你只需要知道如果該控制實施IPostBackDataHandler

Public Shared Function IsControlEditable(ByVal ctrl As Control) As Boolean 
    Return TypeOf ctrl Is IPostBackDataHandler 
End Function 

「如果你想你設計,以檢查由客戶端回發到服務器的表單數據的服務器控件,您必須實現IPostBackDataHandler接口,這個接口定義的合同允許服務器控件確定是否應該由於郵寄回來而改變其狀態,並提出適當的事件。「

這些是實現它的類:

  • 複選框
  • 的CheckBoxList
  • 的DropDownList
  • HtmlInputCheckBox
  • HtmlInputFile
  • HtmlInputHidden
  • HtmlInputImage
  • HtmlInputRadioButton
  • 的HtmlInputText
  • HtmlSelect
  • HtmlTextArea
  • 的ImageButton
  • 列表框
  • 單選按鈕列表
  • 文本框

大檢查實施IPostBackDataHandler的優勢是你的函數在將來(也就是將添加到框架中的控件)以及第三方控件的作用。

0

這是你必須使用的方法,但沒有辦法讓控件的完整列表,尤其是當你在潛在的第三方控制因素。基本上,添加到該列表您正在考慮的其他控件...上面的兩個接口是相當不錯的,以消除一系列的控制...

+0

任何明顯的,你看到我失蹤? – adam0101 2010-12-01 20:29:41

相關問題