Iron Speed Designer Help
 

Adding an ASP.NET DataGrid Control to a Web Page

Updated August 12, 2009
Iron Speed Designer V6.2 and later

In some situations it may be desirable to use an ASP.NET data grid in your application instead of a table control created by Iron Speed Designer, for example:

  • Existing data grid.  Your application may have a page that already has an ASP.NET data grid, and you may wish to use the existing ASP.NET data grid instead of adding an Iron Speed Designer-created table control.

  • Simplicity. You might find it easier to work with an ASP.NET data grid instead of an Iron Speed Designer-created table control.

  • Familiarity.  You may already be familiar with the ASP.NET data grid and don’t have time to learn how to customize code for a new table control.

Adding an ASP.NET DataGrid control on a page

This example adds an ASP.NET data grid at the bottom of a Table Report page, below an Iron Speed Designer-created table panel.

Step 1:  In the Application Explorer, open the page where a DataGrid is to be added.

Step 2:  Zoom out to the page level and locate the cell on the Layout Editor where you want to place the DataGrid control.

Step 3:  Add the following ASP.NET tags in the HTML Editor:

<asp:datagrid id="myDataGrid" OnItemDataBound= "MyItemDataBound" runat="server">

     <HeaderStyle BackColor = "#336699" ForeColor = "#ffffff" Font-Bold = "true" />

     <AlternatingItemStyle BackColor = "#eeeeee" />

</asp:datagrid>

Step 4:  Override the DataBind() method in Section 1 of the Page class, located in:

<Application Folder>\<App_Code>\Orders\ShowOrdersTable.aspx.cs  or .vb

C#:

public override void DataBind()

{

     base.DataBind();

     if (!this.Page.IsPostBack)

     {

          System.Web.UI.WebControls.DataGrid myDataGrid;

          myDataGrid =  ((System.Web.UI.WebControls.DataGrid)(this.FindControlRecursively("myDataGrid")));

          if (!(myDataGrid == null))

          {

              string whereStr = null;

              BaseClasses.Data.OrderBy ob = null;

              int pageIndex = 0;

              int pageSize = 1000;

              myDataGrid.DataSource = OrdersTable.GetDataTable(whereStr, ob, pageIndex, pageSize);

               myDataGrid.DataBind();

          }

     }

}

public void MyItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

     if (e.Item.ItemType == System.Web.UI.WebControls.ListItemType.Item ||

          e.Item.ItemType == System.Web.UI.WebControls.ListItemType.AlternatingItem)

     {

          for(int i = 1; i < (e.Item.Cells.Count); i++)

          {

              e.Item.Cells[i].Style["cursor"] = "hand";

          }

     }

}

Visual Basic .NET:

Public Overrides Sub DataBind()

     MyBase.DataBind()

     If (Not Me.Page.IsPostBack) Then

          Dim myDataGrid As System.Web.UI.WebControls.DataGrid

          myDataGrid = CType(Me.FindControlRecursively("myDataGrid"), System.Web.UI.WebControls.DataGrid)

 

          If (Not myDataGrid Is Nothing) Then

              Dim whereStr As String = Nothing

              Dim ob As BaseClasses.Data.OrderBy = Nothing

              Dim pageIndex As Integer = 0

              Dim pageSize As Integer = 1000

 

              myDataGrid.DataSource = OrdersTable.GetDataTable(whereStr, ob, pageIndex, pageSize)

              myDataGrid.DataBind()

          End If

     End If

End Sub

 

Public Sub MyItemDataBound(ByVal sender As Object, _

     ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs)

     If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then

          Dim i As Integer = 0

 

          While i < (e.Item.Cells.Count)

              e.Item.Cells(i).Style("cursor") = "hand"

              System.Math.Min(System.Threading.Interlocked.Increment(i),i-1)

          End While

     End If

End Sub

Step 5:  Build and run your application.

Replace an Iron Speed Designer-created table control with an ASP.NET DataGrid control

Instead of writing the ASP.NET data grid code from scratch, you can use an Iron Speed Designer-created table control to populate your ASP.NET data grid, saving you a lot of programming.  Since the ASP.NET data grid is populated using the Iron Speed Designer-created table control, features such as filtering, search and pagination are automatically implemented.

Step 1:  Create an application in Iron Speed Designer using a database table, such as the Orders table in Northwind.

Step 2:  In the Layout Editor, zoom in or out on the page level until you locate the fields region for the OrdersTableControl e.g., OrdersFields.

Step 3: Delete the OrdersFields panel on the Layout Editor.

Step 4:  Paste the following code into the same cell via the HTML Editor.

<asp:datagrid id="myDataGrid" runat="server">

     <HeaderStyle BackColor = "#336699" ForeColor = "#ffffff" Font-Bold = "true" />

     <AlternatingItemStyle BackColor = "#eeeeee" />

</asp:datagrid>

Step 5:  Override the DataBind method in the TableControl class of the ShowOrdersTable.aspx web page.  Add your code in the OrdersTableControl class, located in:

<Application Folder>\App_Code\Orders\ShowOrdersTable.Controls.cs or .vb

C#:

public override void DataBind()

{

    base.DataBind();

    if (this.DataSource == null)

    {

        return;

    }

    BindPaginationControls();

    System.Web.UI.WebControls.DataGrid grid = (System.Web.UI.WebControls.DataGrid)(this.FindControl("myDataGrid"));

    this.SetCustomerIDFilter();

    this.SetSalesRepIDFilter();

    System.Data.DataTable table = OrdersTable.Instance.CreateDataTable(this.DataSource);

    grid.DataSource = table;

    grid.DataBind();

 

        }

Visual Basic .NET:

Public Overrides Sub DataBind()

     MyBase.DataBind

     If (Me.DataSource Is Nothing) Then

          Return

     End If

     BindPaginationControls

     Dim grid As System.Web.UI.WebControls.DataGrid =

          CType(Me.FindControl("myDataGrid"),System.Web.UI.WebControls.DataGrid)

Me.SetCustomerIDFilter()

Me.SetSalesRepIDFilter()  Dim table As System.Data.DataTable = OrdersTable.Instance.CreateDataTable(Me.DataSource)

     grid.DataSource = table

     grid.DataBind

End Sub

Step 6:  Build and run your application.