GridView.RowCreated Ereignis

Definition

Tritt ein, wenn eine Zeile in einem GridView-Steuerelement erstellt wird.

public:
 event System::Web::UI::WebControls::GridViewRowEventHandler ^ RowCreated;
public event System.Web.UI.WebControls.GridViewRowEventHandler RowCreated;
member this.RowCreated : System.Web.UI.WebControls.GridViewRowEventHandler 
Public Custom Event RowCreated As GridViewRowEventHandler 

Ereignistyp

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie das RowCreated Ereignis verwendet wird, um den Index der Zeile zu speichern, die in der CommandArgument Eigenschaft eines LinkButton Steuerelements in der Zeile erstellt wird. Dadurch können Sie den Index der Zeile bestimmen, die das LinkButton Steuerelement enthält, wenn der Benutzer auf die Schaltfläche geklickt hat.

<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  void ProductsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
  {
    // If multiple buttons are used in a GridView control, use the
    // CommandName property to determine which button was clicked.
    if(e.CommandName=="Add")
    {
      // Convert the row index stored in the CommandArgument
      // property to an Integer.
      int index = Convert.ToInt32(e.CommandArgument);

      // Retrieve the row that contains the button clicked 
      // by the user from the Rows collection.
      GridViewRow row = ProductsGridView.Rows[index];

      // Create a new ListItem object for the product in the row.     
      ListItem item = new ListItem();
      item.Text = Server.HtmlDecode(row.Cells[1].Text);

      // If the product is not already in the ListBox, add the ListItem 
      // object to the Items collection of the ListBox control. 
      if (!ProductsListBox.Items.Contains(item))
      {
        ProductsListBox.Items.Add(item);
      }
    }
  }

  void ProductsGridView_RowCreated(Object sender, GridViewRowEventArgs e)
  {

    // The GridViewCommandEventArgs class does not contain a 
    // property that indicates which row's command button was
    // clicked. To identify which row's button was clicked, use 
    // the button's CommandArgument property by setting it to the 
    // row's index.
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      // Retrieve the LinkButton control from the first column.
      LinkButton addButton = (LinkButton)e.Row.FindControl("AddButton");

      // Set the LinkButton's CommandArgument property with the
      // row's index.
      addButton.CommandArgument = e.Row.RowIndex.ToString();
    }

  }

</script>

<html>
  <head id="Head1" runat="server">
    <title>GridView RowCreated Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>GridView RowCreated Example</h3>

      <table width="100%">         
        <tr>                
          <td style="width:50%">

            <asp:GridView ID="ProductsGridView" 
              DataSourceID="ProductsDataSource"
              AllowPaging="true" 
              AutoGenerateColumns="false"
              OnRowCommand="ProductsGridView_RowCommand"
              OnRowCreated="ProductsGridView_RowCreated"  
              runat="server">
              <Columns>
                <asp:TemplateField>
                  <ItemTemplate>
                    <asp:LinkButton runat="server"
                      ID="AddButton"
                      CommandName="Add"
                      Text="Add" />
                  </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Name" 
                  HeaderText="Product Name"/> 
                <asp:BoundField DataField="ProductNumber" 
                  HeaderText="Product Number"/>
              </Columns>

            </asp:GridView>

          </td>

          <td style="vertical-align:top; width:50%">

            Products: <br/>
            <asp:listbox id="ProductsListBox"
              runat="server" Height="200px" Width="200px"/> 

          </td>
        </tr>
      </table>

      <!-- This example uses Microsoft SQL Server and connects    -->
      <!-- to the AdventureWorks sample database. Use an ASP.NET  -->
      <!-- expression to retrieve the connection string value     -->
      <!-- from the Web.config file.                              -->
      <asp:sqldatasource id="ProductsDataSource"
        selectcommand="Select [Name], [ProductNumber] From Production.Product"
        connectionstring="<%$ ConnectionStrings:AdventureWorks_DataConnectionString%>" 
        runat="server"/>

    </form>
  </body>
</html>
<%@ Page language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Sub ProductsGridView_RowCommand(ByVal sender As Object, ByVal e As GridViewCommandEventArgs)

    ' If multiple buttons are used in a GridView control, use the
    ' CommandName property to determine which button was clicked.
    If e.CommandName = "Add" Then

      ' Convert the row index stored in the CommandArgument
      ' property to an Integer.
      Dim index As Integer = Convert.ToInt32(e.CommandArgument)

      ' Retrieve the row that contains the button clicked 
      ' by the user from the Rows collection.
      Dim row As GridViewRow = ProductsGridView.Rows(index)

      ' Create a new ListItem object for the product in the row.     
      Dim item As New ListItem()
      item.Text = Server.HtmlDecode(row.Cells(1).Text)

      ' If the product is not already in the ListBox, add the ListItem 
      ' object to the Items collection of the ListBox control. 
      If Not ProductsListBox.Items.Contains(item) Then

        ProductsListBox.Items.Add(item)

      End If

    End If

  End Sub

  Sub ProductsGridView_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)

    ' The GridViewCommandEventArgs class does not contain a 
    ' property that indicates which row's command button was
    ' clicked. To identify which row's button was clicked, use 
    ' the button's CommandArgument property by setting it to the 
    ' row's index.
    If e.Row.RowType = DataControlRowType.DataRow Then

      ' Retrieve the LinkButton control from the first column.
      Dim addButton As LinkButton = CType(e.Row.FindControl("AddButton"), LinkButton)

      ' Set the LinkButton's CommandArgument property with the
      ' row's index.
      addButton.CommandArgument = e.Row.RowIndex.ToString()

    End If

  End Sub

</script>

<html>
  <head id="Head1" runat="server">
    <title>GridView RowCreated Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>GridView RowCreated Example</h3>

      <table width="100%">         
        <tr>                
          <td style="width:50%">

            <asp:GridView ID="ProductsGridView" 
              DataSourceID="ProductsDataSource"
              AllowPaging="true" 
              AutoGenerateColumns="false"
              OnRowCommand="ProductsGridView_RowCommand"
              OnRowCreated="ProductsGridView_RowCreated"  
              runat="server">
              <Columns>
                <asp:TemplateField>
                  <ItemTemplate>
                    <asp:LinkButton runat="server"
                      ID="AddButton"
                      CommandName="Add"
                      Text="Add" />
                  </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="Name" 
                  HeaderText="Product Name"/> 
                <asp:BoundField DataField="ProductNumber" 
                  HeaderText="Product Number"/>
              </Columns>

            </asp:GridView>

          </td>

          <td style="vertical-align:top; width:50%">

            Products: <br/>
            <asp:listbox id="ProductsListBox"
              runat="server" Height="200px" Width="200px"/> 

          </td>
        </tr>
      </table>

      <!-- This example uses Microsoft SQL Server and connects    -->
      <!-- to the AdventureWorks sample database. Use an ASP.NET  -->
      <!-- expression to retrieve the connection string value     -->
      <!-- from the Web.config file.                              -->
      <asp:sqldatasource id="ProductsDataSource"
        selectcommand="Select [Name], [ProductNumber] From Production.Product"
        connectionstring="<%$ ConnectionStrings:AdventureWorks_DataConnectionString%>" 
        runat="server"/>

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

Hinweise

Bevor das GridView Steuerelement gerendert werden kann, muss für jede Zeile im Steuerelement ein GridViewRow Objekt erstellt werden. Das RowCreated Ereignis wird ausgelöst, wenn jede Zeile im GridView Steuerelement erstellt wird. Dadurch können Sie eine Ereignisbehandlungsmethode bereitstellen, die eine benutzerdefinierte Routine ausführt, z. B. das Hinzufügen benutzerdefinierter Inhalte zu einer Zeile, wenn dieses Ereignis auftritt.

Ein GridViewRowEventArgs -Objekt wird an die Ereignisbehandlungsmethode übergeben, mit der Sie auf die Eigenschaften der erstellten Zeile zugreifen können. Um auf eine bestimmte Zelle in der Zeile zuzugreifen, verwenden Sie die Cells -Eigenschaft des GridViewRowEventArgs -Objekts. Mithilfe der RowType -Eigenschaft können Sie bestimmen, welcher Zeilentyp (Kopfzeile, Datenzeile usw.) erstellt wird.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter behandeln und Auslösen von Ereignissen.

Gilt für:

Weitere Informationen