(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

DataControlField-Klasse

Fungiert als Basisklasse für alle Feldtypen von Datensteuerelementen, die eine Datenspalte in tabellarischen, datengebundenen Steuerelementen darstellen, z. B. in DetailsView und GridView.

Namespace: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

[TypeConverterAttribute(typeof(ExpandableObjectConverter))] 
public abstract class DataControlField : IStateManager, IDataSourceViewSchemaAccessor
/** @attribute TypeConverterAttribute(System.ComponentModel.ExpandableObjectConverter) */ 
public abstract class DataControlField implements IStateManager, IDataSourceViewSchemaAccessor
TypeConverterAttribute(System.ComponentModel.ExpandableObjectConverter) 
public abstract class DataControlField implements IStateManager, IDataSourceViewSchemaAccessor
Nicht zutreffend.

Die DataControlField-Klasse fungiert als Basisklasse für alle Feldtypen von Datensteuerelementen. Datengebundene Steuerelemente stellen mithilfe von Datensteuerelementfeldern ein Datenfeld dar. Dies ist vergleichbar mit der Darstellung eines Spaltentyps im DataGrid-Steuerelement durch ein DataGridColumn-Objekt.

Mit von DataControlField abgeleiteten Klassen können Sie steuern, wie ein Datenfeld in einem datengebundenen Steuerelement (z. B. DetailsView oder GridView) angezeigt wird. In der folgenden Tabelle werden die verschiedenen, von ASP.NET bereitgestellten Feldtypen für Datensteuerelemente aufgelistet.

Spaltenfeldtyp

Beschreibung

BoundField

Zeigt den Wert eines Felds in einer Datenquelle als Text an.

ButtonField

Zeigt eine Befehlsschaltfläche in einem datengebundenen Steuerelement an. Je nach Steuerelement können Sie so entweder eine Zeile oder eine Spalte mit einem benutzerdefinierten Schaltflächensteuerelement (z. B. mit einer Hinzufügen- oder Entfernen-Schaltfläche) anzeigen.

CheckBoxField

Zeigt ein Kontrollkästchen in einem datengebundenen Steuerelement an. Mithilfe dieses Datensteuerelement-Feldtyps werden i. d. R. Felder mit einem booleschen Wert angezeigt.

CommandField

Zeigt integrierte Befehlsschaltflächen zum Ausführen von Bearbeitungs-, Einfüge- oder Löschvorgängen in einem datengebundenen Steuerelement an.

HyperLinkField

Zeigt den Wert eines Felds in einer Datenquelle als Hyperlink an. Mithilfe dieses Datensteuerelement-Feldtyps können Sie ein zweites Feld an den URL des Hyperlinks binden.

ImageField

Zeigt ein Bild in einem datengebundenen Steuerelement an.

TemplateField

Zeigt gemäß einer angegebenen Vorlage benutzerdefinierten Inhalt in einem datengebundenen Steuerelement an.

Sie können auch die DataControlField-Klasse und die BoundField-Klasse erweitern, um eigene Feldtypen für Datensteuerelemente zu erstellen.

Die DataControlField-Klasse stellt viele Eigenschaft bereit, mit denen die Darstellung von Benutzeroberflächenelementen im datengebundenen Steuerelement festgelegt werden kann. Nicht jedes Steuerelement verwendet bei der Wiedergabe einer Benutzeroberfläche alle verfügbaren Feldeigenschaften des Datensteuerelements. Beispielsweise zeigt das DetailsView-Steuerelement die Datensteuerelementfelder als Zeilen an und enthält zwar ein Kopfzeilenelement für jedes Datensteuerelementfeld, jedoch kein Fußzeilenelement. Deshalb werden die FooterText-Eigenschaft und die FooterStyle-Eigenschaft vom DetailsView-Steuerelement ignoriert. Das GridView-Steuerelement verwendet jedoch die FooterText-Eigenschaft und die FooterStyle-Eigenschaft, sofern die ShowFooter-Eigenschaft auf true festgelegt ist. Ebenso wirken sich die Feldeigenschaften der Datensteuerelemente je von Art des Elements auch auf die Darstellung der Benutzeroberflächenelemente aus. Die ItemStyle-Eigenschaft wird immer auf das Feld angewendet. Wenn der von DataControlField abgeleitete Typ ein Steuerelement enthält (z. B. in der ButtonField-Klasse oder der CheckBoxField-Klasse), wird die ControlStyle-Eigenschaft auf das Feld angewendet.

Im folgenden Codebeispiel wird veranschaulicht, wie mithilfe des BoundField-Objekts und des ButtonField-Objekts, die von DataControlField abgeleitet sind, Zeilen in einem DetailsView-Steuerelement angezeigt werden. Für das DetailsView-Steuerelement wurde die AutoGenerateRows-Eigenschaft auf false festgelegt. Dadurch kann eine Teilmenge der von der SelectCommand-Eigenschaft zurückgegebenen Daten angezeigt werden.

<%@ page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">

    <asp:sqldatasource
      id="SqlDataSource1"
      runat="server"
      connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
      selectcommand="Select * From Employees">
    </asp:sqldatasource>

    <asp:detailsview
      id="DetailsView1"
      runat="server"
      allowpaging="True"
      datasourceid="SqlDataSource1"
      height="208px"
      width="264px"
      autogeneraterows="False">
        <fields>

          <asp:boundfield
            sortexpression="LastName"
            datafield="LastName"
            headertext="LastName">
              <itemstyle backcolor="Yellow">
              </itemstyle>
          </asp:boundfield>

          <asp:boundfield
            sortexpression="FirstName"
            datafield="FirstName"
            headertext="FirstName">
              <itemstyle forecolor="#C00000">
              </itemstyle>
          </asp:boundfield>

          <asp:buttonfield
            text="TestButton"
            buttontype="Button">
          </asp:buttonfield>

        </fields>
    </asp:detailsview>

  </form>
</body>
</html>

<%@ page language="VJ#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
  <form id="form1" runat="server">

    <asp:sqldatasource
      id="SqlDataSource1"
      runat="server"
      connectionstring="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
      selectcommand="Select * From Employees">
    </asp:sqldatasource>

    <asp:detailsview
      id="DetailsView1"
      runat="server"
      allowpaging="True"
      datasourceid="SqlDataSource1"
      height="208px"
      width="264px"
      autogeneraterows="False">
        <fields>

          <asp:boundfield
            sortexpression="LastName"
            datafield="LastName"
            headertext="LastName">
              <itemstyle backcolor="Yellow">
              </itemstyle>
          </asp:boundfield>

          <asp:boundfield
            sortexpression="FirstName"
            datafield="FirstName"
            headertext="FirstName">
              <itemstyle forecolor="#C00000">
              </itemstyle>
          </asp:boundfield>

          <asp:buttonfield
            text="TestButton"
            buttontype="Button">
          </asp:buttonfield>

        </fields>
    </asp:detailsview>

  </form>
</body>
</html>

Im folgenden Codebeispiel wird das Erweitern der BoundField-Klasse zum Erstellen eines benutzerdefinierten, gebundenen Felds veranschaulicht, das in einem GridView-Steuerelement verwendet werden kann. Ebenso wie die CheckBoxField-Klasse stellt auch die RadioButtonField-Klasse eine Spalte von true-Daten oder false-Daten dar. Im Gegensatz zur CheckBoxField-Klasse, bei der die an die Klasse gebundenen Daten aus einer beliebigen Reihe von true-Werten oder false-Werten bestehen können, dürfen die Daten, an die die RadioButtonField-Klasse gebunden ist, immer nur einen true-Wert enthalten. In diesem Beispiel wird veranschaulicht, wie die ExtractValuesFromCell-Methode und die InitializeCell-Methode implementiert werden. Beide sind wichtige Methoden für alle von DataControlField abgeleiteten Klassen.

namespace Samples.AspNet.CS {

  using System;
  using System.Collections;
  using System.Collections.Specialized;
  using System.ComponentModel;
  using System.Security.Permissions;
  using System.Web;
  using System.Web.UI;
  using System.Web.UI.WebControls;

  [AspNetHostingPermission(SecurityAction.Demand, 
      Level=AspNetHostingPermissionLevel.Minimal)]
  public sealed class RadioButtonField : CheckBoxField {

    public RadioButtonField() {
    }

    // Gets a default value for a basic design-time experience. 
    // Since it would look odd, even at design time, to have 
    // more than one radio button selected, make sure that none
    // are selected.
    protected override object GetDesignTimeValue() {
        return false;
    }
    // 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 adds a RadioButton control and any other 
    // content to the cell's Controls collection.
    protected override void InitializeDataCell
        (DataControlFieldCell cell, DataControlRowState rowState) {

      RadioButton radio = new RadioButton();

      // If the RadioButton is bound to a DataField, add
      // the OnDataBindingField method event handler to the
      // DataBinding event.
      if (DataField.Length != 0) {
        radio.DataBinding += new EventHandler(this.OnDataBindField);
      }

      radio.Text = this.Text;

      // Because the RadioButtonField is a BoundField, it only
      // displays data. Therefore, unless the row is in edit mode,
      // the RadioButton is displayed as disabled.
      radio.Enabled = false;
      // If the row is in edit mode, enable the button.
      if ((rowState & DataControlRowState.Edit) != 0 ||
          (rowState & DataControlRowState.Insert) != 0) {
        radio.Enabled = true;
      }

      cell.Controls.Add(radio);
    }
  }
}

package Samples.AspNet; 

import System.*;
import System.Collections.*;
import System.Collections.Specialized.*;
import System.ComponentModel.*;
import System.Web.UI.*;
import System.Web.UI.WebControls.*;

public class RadioButtonField extends CheckBoxField
{    
    public RadioButtonField()
    {
    } //RadioButtonField

    // Gets a default value for a basic design-time experience. 
    //Since it would look odd,
    // even at design time, to have more than one radio button selected,
    //make sure that
    // none are selected.
    protected Object GetDesignTimeValue()
    {
        return (System.Boolean)false;
    } //GetDesignTimeValue

    // This method is called by the ExtractRowValues methods on GridView 
    //and DetailsView. Retrieve
    // the current value of the cell from the Checked state of the Radio button.
    public void ExtractValuesFromCell(IOrderedDictionary dictionary, 
        DataControlFieldCell cell, DataControlRowState rowState, 
        boolean includeReadOnly) throws InvalidOperationException
    {
        // Does the cell contain a RadioButton in its Controls collection?
        if (cell.get_Controls().get_Count() > 0) {
            RadioButton radio = (RadioButton)cell.get_Controls().get_Item(0);

            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 = (System.Boolean)radio.get_Checked();
            }
            // Add the value of the Checked attribute of the
            // RadioButton to the dictionary.
            if (dictionary.Contains(get_DataField())) {
                dictionary.set_Item(get_DataField(), checkedValue);
            }
            else {
                dictionary.Add(get_DataField(), checkedValue);
            }
        }
    } //ExtractValuesFromCell

    // This method adds a RadioButton control and any other content to the
    //cell's Controls collection.
    protected void InitializeDataCell(DataControlFieldCell cell, 
        DataControlRowState rowState)
    {
        RadioButton radio = new RadioButton();
        // If the RadioButton is bound to a DataField, add
        // the OnDataBindingField method event handler to the
        // DataBinding event.
        if (get_DataField().get_Length() != 0) {
            radio.add_DataBinding(new EventHandler(this.OnDataBindField));
        }
        radio.set_Text(this.get_Text());
        // Because the RadioButtonField is a BoundField, it only displays data. Therefore,
        // unless the row is in edit mode, the RadioButton is displayed as 
        // disabled.
        radio.set_Enabled(false);
        // If the row is in edit mode, enable the button.
        if (((int)(rowState & DataControlRowState.Edit) != 0) || ((int)(
            rowState & DataControlRowState.Insert) != 0)) {
            radio.set_Enabled(true);
        }
        cell.get_Controls().Add(radio);
    } //InitializeDataCell
} //RadioButtonField    

Im folgenden Codebeispiel wird veranschaulicht, wie die im vorigen Beispiel bereitgestellte RadioButtonField-Klasse in einem GridView-Steuerelement verwendet wird. In diesem Beispiel zeigt das GridView-Steuerelement Daten für ein Sportteam an. Die Spielerdaten werden in einer Datentabelle verwaltet, die eine ID-Spalte, eine Spalte für die Spielernamen sowie eine true/false-Spalte enthält, in der der Teamkapitän bezeichnet wird. Mithilfe der RadioButtonField-Klasse wird angezeigt, welches Teammitglied zurzeit der Kapitän des Teams ist. Das GridView-Steuerelement kann bearbeitet werden, um einen neuen Teamkapitän auszuwählen oder andere Spielerinformationen zu ändern.

<%@ page language="C#" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet.CS"
             Assembly="Samples.AspNet.CS" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:gridview
          id="GridView1"
          runat="server"
          allowpaging="True"
          datasourceid="SqlDataSource1"
          allowsorting="True"
          autogeneratecolumns="False"
          autogenerateeditbutton="True"
          datakeynames="AnID">
            <columns>

                <aspSample:radiobuttonfield
                  headertext="RadioButtonField"
                  text="TeamLeader"
                  datafield="TrueFalse">
                </aspSample:radiobuttonfield>

                <asp:boundfield
                  insertvisible="False"
                  sortexpression="AnID"
                  datafield="AnID"
                  readonly="True"
                  headertext="AnID">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="FirstName"
                  datafield="FirstName"
                  headertext="FirstName">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="LastName"
                  datafield="LastName"
                  headertext="LastName">
                </asp:boundfield>

              </columns>
        </asp:gridview>
        <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          connectionstring="<%$ ConnectionStrings:MyNorthwind%>"
          selectcommand="SELECT AnID,FirstName,LastName,TeamLeader FROM Players"
          updatecommand="UPDATE Players SET TrueFalse='false';UPDATE Players SET TrueFalse='true' WHERE AnID=@anID">
        </asp:sqldatasource>

    </form>
</body>
</html>

<%@ page language="VJ#" %>
<%@ Register Tagprefix="aspSample"
             Namespace="Samples.AspNet"
             Assembly="Samples.AspNet.JSL" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:gridview
          id="GridView1"
          runat="server"
          allowpaging="True"
          datasourceid="SqlDataSource1"
          allowsorting="True"
          autogeneratecolumns="False"
          autogenerateeditbutton="True"
          datakeynames="AnID">
            <columns>

                <aspSample:radiobuttonfield
                  headertext="RadioButtonField"
                  text="TeamLeader"
                  datafield="TrueFalse">
                </aspSample:radiobuttonfield>

                <asp:boundfield
                  insertvisible="False"
                  sortexpression="AnID"
                  datafield="AnID"
                  readonly="True"
                  headertext="AnID">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="FirstName"
                  datafield="FirstName"
                  headertext="FirstName">
                </asp:boundfield>

                <asp:boundfield
                  sortexpression="LastName"
                  datafield="LastName"
                  headertext="LastName">
                </asp:boundfield>

              </columns>
        </asp:gridview>
        <asp:sqldatasource
          id="SqlDataSource1"
          runat="server"
          Connectionstring="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind"
          SelectCommand="SELECT AnID,FirstName,LastName,TeamLeader FROM Players"
          UpdateCommand="UPDATE Players SET TrueFalse='false';UPDATE Players SET TrueFalse='true' WHERE AnID=@anID">
        </asp:sqldatasource>

    </form>
</body>
</html>

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 wird unter Windows Vista, Microsoft Windows XP SP2 und Windows Server 2003 SP1 unterstützt.

.NET Framework

Unterstützt in: 3.0, 2.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.