DataGridColumnCollection.Count Property
Gets the number of columns in the DataGridColumnCollection.
[Visual Basic] Public Overridable ReadOnly Property Count As Integer Implements _ ICollection.Count [C#] public virtual int Count {get;} [C++] public: __property virtual int get_Count(); [JScript] public function get Count() : int;
Property Value
The number of columns in the DataGridColumnCollection.
Implements
Remarks
Use this property to determine the number of columns in the DataGridColumnCollection. The Count property is commonly used when iterating through the collection to determine the upper bound of the collection.
Example
[Visual Basic, C#] The following example demonstrates how to use the Count property to determine the upper bound of the DataGridColumnCollection. This value is then used to iterate though the collection.
[Visual Basic] <%@ Page Language="VB" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script language="VB" runat="server"> Dim Cart As New DataTable() Dim CartView As DataView Sub Page_Load(sender As Object, e As EventArgs) Dim dr As DataRow If Session("ShoppingCart") Is Nothing Then Cart.Columns.Add(New DataColumn("Qty", GetType(String))) Cart.Columns.Add(New DataColumn("Item", GetType(String))) Cart.Columns.Add(New DataColumn("Price", GetType(String))) Session("ShoppingCart") = Cart ' Create sample data. Dim i As Integer For i = 1 To 4 dr = Cart.NewRow() If i Mod 2 <> 0 Then dr(0) = "2" Else dr(0) = "1" End If dr(1) = "Item " & i.ToString() dr(2) =(1.23 *(i + 1)).ToString() Cart.Rows.Add(dr) Next i Else Cart = CType(Session("ShoppingCart"), DataTable) End If CartView = New DataView(Cart) CartView.Sort = "Item" If Not IsPostBack Then BindGrid() End If End Sub 'Page_Load Sub MyDataGrid_Edit(sender As Object, e As DataGridCommandEventArgs) MyDataGrid.EditItemIndex = e.Item.ItemIndex BindGrid() End Sub 'MyDataGrid_Edit Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs) MyDataGrid.EditItemIndex = - 1 BindGrid() End Sub 'MyDataGrid_Cancel Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs) ' For bound columns, the edited value is stored in a TextBox. ' The TextBox is the 0th element in the column's cell. Dim qtyText As TextBox = CType(e.Item.Cells(2).Controls(0), TextBox) Dim priceText As TextBox = CType(e.Item.Cells(3).Controls(0), TextBox) Dim item As String = e.Item.Cells(1).Text Dim qty As String = qtyText.Text Dim price As String = priceText.Text Dim dr As DataRow ' With a database, use an update command to update the data. Because ' the data source in this example is an in-memory DataTable, delete the ' old row and replace it with a new one. ' Remove old entry. CartView.RowFilter = "Item='" & item & "'" If CartView.Count > 0 Then CartView.Delete(0) End If CartView.RowFilter = "" ' Add new entry. dr = Cart.NewRow() dr(0) = qty dr(1) = item dr(2) = price Cart.Rows.Add(dr) MyDataGrid.EditItemIndex = - 1 BindGrid() End Sub 'MyDataGrid_Update Sub Button_Click(sender As Object, e As EventArgs) Label1.Text = "Header Text for each column: <br><br>" Dim i As Integer For i = 0 To MyDataGrid.Columns.Count - 1 Label1.Text &= "<br>" & MyDataGrid.Columns(i).HeaderText Next i End Sub 'Button_Click Sub BindGrid() MyDataGrid.DataSource = CartView MyDataGrid.DataBind() End Sub 'BindGrid </script> <body style="font: 10pt verdana"> <form runat="server"> <asp:DataGrid id="MyDataGrid" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" AutoGenerateColumns="false"> <Columns> <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false" HeaderText="Edit Command Column" HeaderStyle-Wrap="false"/> <asp:BoundColumn HeaderText="Item" ReadOnly="true" DataField="Item"/> <asp:BoundColumn HeaderText="Quantity" DataField="Qty"/> <asp:BoundColumn HeaderText="Price" DataField="Price"/> </Columns> </asp:DataGrid> <br><br> <asp:Button id="Button1" Text="Display Header Text for Columns" OnClick="Button_Click" runat="server"/> <br><br> <asp:Label id="Label1" runat="server"/> </form> </body> </html> [C#] <%@ Page Language="C#" AutoEventWireup="True" %> <%@ Import Namespace="System.Data" %> <html> <script language="C#" runat="server"> DataTable Cart = new DataTable(); DataView CartView; void Page_Load(Object sender, EventArgs e) { DataRow dr; if (Session["ShoppingCart"] == null) { Cart.Columns.Add(new DataColumn("Qty", typeof(String))); Cart.Columns.Add(new DataColumn("Item", typeof(String))); Cart.Columns.Add(new DataColumn("Price", typeof(String))); Session["ShoppingCart"] = Cart; // Create sample data. for (int i = 1; i <= 4; i++) { dr = Cart.NewRow(); if (i % 2 != 0) dr[0] = "2"; else dr[0] = "1"; dr[1] = "Item " + i.ToString(); dr[2] = (1.23 * (i + 1)).ToString(); Cart.Rows.Add(dr); } } else Cart = (DataTable)Session["ShoppingCart"]; CartView = new DataView(Cart); CartView.Sort="Item"; if (!IsPostBack) BindGrid(); } void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) { MyDataGrid.EditItemIndex = e.Item.ItemIndex; BindGrid(); } void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) { MyDataGrid.EditItemIndex = -1; BindGrid(); } void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) { // For bound columns, the edited value is stored in a TextBox. // The TextBox is the 0th element in the column's cell. TextBox qtyText = (TextBox)e.Item.Cells[2].Controls[0]; TextBox priceText = (TextBox)e.Item.Cells[3].Controls[0]; String item = e.Item.Cells[1].Text; String qty = qtyText.Text; String price = priceText.Text; DataRow dr; // With a database, use an update command to update the data. Because // the data source in this example is an in-memory DataTable, delete the // old row and replace it with a new one. // Remove old entry. CartView.RowFilter = "Item='" + item + "'"; if (CartView.Count > 0) CartView.Delete(0); CartView.RowFilter = ""; // Add new entry. dr = Cart.NewRow(); dr[0] = qty; dr[1] = item; dr[2] = price; Cart.Rows.Add(dr); MyDataGrid.EditItemIndex = -1; BindGrid(); } void Button_Click(Object sender, EventArgs e) { Label1.Text = "Header Text for each column: <br>"; for (int i = 0; i < MyDataGrid.Columns.Count; i++) { Label1.Text += "<br>" + MyDataGrid.Columns[i].HeaderText; } } void BindGrid() { MyDataGrid.DataSource = CartView; MyDataGrid.DataBind(); } </script> <body style="font: 10pt verdana"> <form runat="server"> <asp:DataGrid id="MyDataGrid" runat="server" BorderColor="black" BorderWidth="1" CellPadding="3" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="#aaaadd" OnEditCommand="MyDataGrid_Edit" OnCancelCommand="MyDataGrid_Cancel" OnUpdateCommand="MyDataGrid_Update" AutoGenerateColumns="false"> <Columns> <asp:EditCommandColumn EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false" HeaderText="Edit Command Column" HeaderStyle-Wrap="false"/> <asp:BoundColumn HeaderText="Item" ReadOnly="true" DataField="Item"/> <asp:BoundColumn HeaderText="Quantity" DataField="Qty"/> <asp:BoundColumn HeaderText="Price" DataField="Price"/> </Columns> </asp:DataGrid> <br><br> <asp:Button id="Button1" Text="Display Header Text for Columns" OnClick="Button_Click" runat="server"/> <br><br> <asp:Label id="Label1" runat="server"/> </form> </body> </html>
[C++, JScript] No example is available for C++ or JScript. To view a Visual Basic or C# example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 2000, Windows XP Professional, Windows Server 2003 family
See Also
DataGridColumnCollection Class | DataGridColumnCollection Members | System.Web.UI.WebControls Namespace | DataGrid