Sdílet prostřednictvím


DataControlField.ExtractValuesFromCell Metoda

Definice

Extrahuje hodnotu pole ovládacího prvku dat z aktuální buňky tabulky a přidá hodnotu do zadané IDictionary kolekce.

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)

Parametry

cell
DataControlFieldCell

A DataControlFieldCell , který obsahuje text nebo ovládací prvky DataControlField.

rowState
DataControlRowState

Jedna z DataControlRowState hodnot.

includeReadOnly
Boolean

true chcete-li označit, že hodnoty polí jen pro čtení jsou zahrnuty v dictionary kolekci; v opačném případě false.

Příklady

Následující příklad kódu ukazuje, jak implementovat metodu ExtractValuesFromCell pro ovládací prvek, který je odvozen z DataControlField třídy. Třída RadioButtonField vykreslí přepínač vázané na data pro každý řádek v ovládacím GridView prvku. ExtractValuesFromCell Při volání metody se metoda pokusí určit, zda je aktuální hodnota RadioButton objektu obsaženého v buňce vybrána nebo vymazána, a přidá hodnotu do IDictionary kolekce. Tento příklad kódu je součástí většího příkladu poskytnutého DataControlField pro třídu.

// 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

Poznámky

Metoda ExtractValuesFromCell je implementována pomocí typů odvozených od DataControlField pro přidružení aktuálního pole k hodnotě, pokud je to možné. Dvojice polí a hodnot je uložena v dictionary kolekci, která je předána metodě. Metoda ExtractValuesFromCell je volána metodou ExtractRowValues ovládacích prvků dat, jako je a DetailsView GridView.

Tuto metodu zavolejte při psaní vlastního ovládacího prvku vázaného na data, který používá DataControlFieldCell objekty k sestavení sady buněk a jejich přidružených hodnot. Tuto metodu implementujte při psaní třídy odvozené z DataControlField toho, která zobrazuje uživatelská data nebo data svázaná s daty. Ne všechny odvozené typy implementují metodu ExtractValuesFromCell , protože ne všechna pole zobrazují uživatelská data. Ovládací prvek například ButtonField zobrazí tlačítko a nemá žádná uživatelská data.

Platí pro

Viz také