다음을 통해 공유


GridView.OnRowCreated(GridViewRowEventArgs) 메서드

정의

RowCreated 이벤트를 발생시킵니다.

protected:
 virtual void OnRowCreated(System::Web::UI::WebControls::GridViewRowEventArgs ^ e);
protected virtual void OnRowCreated (System.Web.UI.WebControls.GridViewRowEventArgs e);
abstract member OnRowCreated : System.Web.UI.WebControls.GridViewRowEventArgs -> unit
override this.OnRowCreated : System.Web.UI.WebControls.GridViewRowEventArgs -> unit
Protected Overridable Sub OnRowCreated (e As GridViewRowEventArgs)

매개 변수

e
GridViewRowEventArgs

이벤트 데이터가 들어 있는 GridViewRowEventArgs입니다.

예제

다음 예제에서는 이벤트에 대 한 이벤트 처리 메서드를 제공 하는 방법을 보여 줍니다 RowCreated . 행을 만들 때 해당 인덱스는 새 행에 CommandArgument 포함된 컨트롤의 LinkButton 속성에 저장됩니다. 이렇게 하면 사용자가 명령 단추를 클릭할 때 행의 인덱스를 확인할 수 있습니다.

<%@ 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>

설명

전에 GridView 컨트롤을 렌더링을 GridViewRow 컨트롤의 각 행에 대 한 개체를 만들어야 합니다. 이벤트는 RowCreated 컨트롤의 각 행을 GridView 만들 때 발생합니다. 이렇게 하면 이 이벤트가 발생할 때마다 행에 사용자 지정 콘텐츠를 추가하는 등 사용자 지정 루틴을 수행하는 이벤트 처리 메서드를 제공할 수 있습니다.

이벤트가 발생하면 대리자를 통해 이벤트 처리기가 호출됩니다. 자세한 내용은 이벤트 처리 및 발생합니다.

또한 OnRowCreated 메서드를 사용하면 파생 클래스가 대리자를 연결하지 않고도 이벤트를 처리할 수 있습니다. 이는 파생 클래스에서 이벤트를 처리하는 기본 방법입니다.

상속자 참고

파생 클래스에서 OnRowCreated(GridViewRowEventArgs)를 재정의하는 경우 등록된 대리자가 이벤트를 받도록 기본 클래스의 OnRowCreated(GridViewRowEventArgs) 메서드를 호출해야 합니다.

적용 대상

추가 정보