Поделиться через


DataControlField.ExtractValuesFromCell Метод

Определение

Добывает значение поля элемента управления данными из текущей ячейки таблицы и добавляет значение в указанную коллекцию IDictionary.

public:
 virtual void ExtractValuesFromCell(System::Collections::Specialized::IOrderedDictionary ^ dictionary, System::Web::UI::WebControls::DataControlFieldCell ^ cell, System::Web::UI::WebControls::DataControlRowState rowState, bool includeReadOnly);
public virtual void ExtractValuesFromCell (System.Collections.Specialized.IOrderedDictionary dictionary, System.Web.UI.WebControls.DataControlFieldCell cell, System.Web.UI.WebControls.DataControlRowState rowState, bool includeReadOnly);
abstract member ExtractValuesFromCell : System.Collections.Specialized.IOrderedDictionary * System.Web.UI.WebControls.DataControlFieldCell * System.Web.UI.WebControls.DataControlRowState * bool -> unit
override this.ExtractValuesFromCell : System.Collections.Specialized.IOrderedDictionary * System.Web.UI.WebControls.DataControlFieldCell * System.Web.UI.WebControls.DataControlRowState * bool -> unit
Public Overridable Sub ExtractValuesFromCell (dictionary As IOrderedDictionary, cell As DataControlFieldCell, rowState As DataControlRowState, includeReadOnly As Boolean)

Параметры

dictionary
IOrderedDictionary

Объект IOrderedDictionary.

cell
DataControlFieldCell

DataControlFieldCell, содержащий текст или элементы управления DataControlField.

rowState
DataControlRowState

Одно из значений перечисления DataControlRowState.

includeReadOnly
Boolean

Значение true, чтобы указать, что значения полей, доступные только для чтения, включены в коллекцию dictionary; в противном случае — значение false.

Примеры

В следующем примере кода показано, как реализовать ExtractValuesFromCell метод для элемента управления, производного от DataControlField класса . Класс RadioButtonField отображает переключатель с привязкой к данным для каждой строки в элементе GridView управления . При вызове ExtractValuesFromCell метода метод пытается определить, выбрано или очищено текущее значение RadioButton объекта, содержащегося в ячейке, и добавляет значение в коллекцию IDictionary . Этот пример входит в состав более крупного примера использования класса DataControlField.

// This method is called by the ExtractRowValues methods of 
// GridView and DetailsView. Retrieve the current value of the 
// cell from the Checked state of the Radio button.
public override void ExtractValuesFromCell(IOrderedDictionary dictionary,
                                           DataControlFieldCell cell,
                                           DataControlRowState rowState,
                                           bool includeReadOnly)
{

  // Determine whether the cell contains a RadioButton 
  // in its Controls collection.
  if (cell.Controls.Count > 0) {
    RadioButton radio = cell.Controls[0] as RadioButton;

    object checkedValue = null;
    if (null == radio) {
      // A RadioButton is expected, but a null is encountered.
      // Add error handling.
      throw new InvalidOperationException
          ("RadioButtonField could not extract control.");
    }
    else {
        checkedValue = radio.Checked;
    }

    // Add the value of the Checked attribute of the
    // RadioButton to the dictionary.
    if (dictionary.Contains(DataField))
      dictionary[DataField] = checkedValue;
    else
      dictionary.Add(DataField, checkedValue);
  }
}
' This method is called by the ExtractRowValues methods of
' GridView and DetailsView. Retrieve the current value of the 
' cell from the Checked state of the Radio button.
Public Overrides Sub ExtractValuesFromCell( _
    ByVal dictionary As IOrderedDictionary, _
    ByVal cell As DataControlFieldCell, _
    ByVal rowState As DataControlRowState, _
    ByVal includeReadOnly As Boolean)
    ' Determine whether the cell contain a RadioButton 
    ' in its Controls collection.
    If cell.Controls.Count > 0 Then
        Dim radio As RadioButton = CType(cell.Controls(0), RadioButton)

        Dim checkedValue As Object = Nothing
        If radio Is Nothing Then
            ' A RadioButton is expected, but a null is encountered.
            ' Add error handling.
            Throw New InvalidOperationException( _
                "RadioButtonField could not extract control.")
        Else
            checkedValue = radio.Checked
        End If


        ' Add the value of the Checked attribute of the
        ' RadioButton to the dictionary.
        If dictionary.Contains(DataField) Then
            dictionary(DataField) = checkedValue
        Else
            dictionary.Add(DataField, checkedValue)
        End If
    End If
End Sub

Комментарии

Метод ExtractValuesFromCell реализуется типами, производными от , DataControlField чтобы связать текущее поле со значением, если применимо. Пара "поле-значение" хранится в dictionary коллекции, передаваемой методу . Метод ExtractValuesFromCell вызывается методом элементов управления данными ExtractRowValues , таких как DetailsView и GridView.

Вызовите этот метод при написании пользовательского элемента управления с привязкой к данным, который использует DataControlFieldCell объекты для сборки набора ячеек и связанных с ними значений. Реализуйте этот метод при написании класса, производного от DataControlField , который отображает данные пользователя или привязанные к данным данные. Не все производные ExtractValuesFromCell типы реализуют метод , так как не во всех полях отображаются пользовательские данные. Например, элемент ButtonField управления отображает кнопку без пользовательских данных.

Применяется к

См. также раздел