HighTechTalks DotNet Forums  

Controls In DataGrid?

ASP.net Data Grid Control microsoft.public.dotnet.framework.aspnet.datagridcontrol


Discuss Controls In DataGrid? in the ASP.net Data Grid Control forum.



Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old   
Arpan
 
Posts: n/a

Default Controls In DataGrid? - 08-06-2006 , 04:46 PM






Consider the following code which retrieves data from a SQL Server 2005
DB table & displays it in a DataGrid:

<script runat="server">
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
Dim dSet As DataSet
Dim sqlConn As SqlConnection
Dim sqlDapter As SqlDataAdapter

sqlConn = New SqlConnection("Data Source=AD\SQLEXPRESS;Initial
Catalog=MyDB;Integrated Security=True")
sqlDapter = New SqlDataAdapter("SELECT * FROM Users", sqlConn)

dSet = New DataSet()
sqlDapter.Fill(dSet, "Users")

dgUsers.DataSource = dSet.Tables("Users").DefaultView
dgUsers.DataBind()
End Sub

Sub EditUsers(ByVal obj As Object, ByVal ea As
DataGridCommandEventArgs)
dgUsers.EditItemIndex = ea.Item.ItemIndex
dgUsers.DataBind()

Response.Write(Control0: ")
Response.Write(ea.Item.Cells(0).Controls(0))

Response.Write("<br>Control1: ")
Response.Write(ea.Item.Cells(0).Controls(1))

Response.Write("<br>Control2: ")
Response.Write(ea.Item.Cells(0).Controls(2))

Response.Write("<br>Control Count: " &
ea.Item.Cells(0).Controls.Count)
Response.Write("<br>Cell Count: " & ea.Item.Cells.Count)

'Response.Write("<br>Control3: ")
'Response.Write(ea.Item.Cells(0).Controls(3))
End Sub
</script>

<form runat="server">
<aspataGrid ID="dgUsers" OnEditCommand="EditUsers"
AutoGenerateColumns="false" runat="server">
<Columns>
<asp:TemplateColumn HeaderText="NAME">
<ItemTemplate>
<asp:Label ID="lblName" runat="server"><%#
Container.DataItem("FirstName") %> <%#
Container.DataItem("LastName") %></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="ADDRESS" DataField="Address"/>
<asp:BoundColumn HeaderText="CITY" DataField="City"/>
<asp:BoundColumn HeaderText="STATE" DataField="State"/>
<asp:BoundColumn HeaderText="ZIP" DataField="Zip"/>
<asp:EditCommandColumn HeaderText="EDIT" CancelText="CANCEL"
EditText="EDIT" UpdateText="UPDATE"/>
</Columns>
</aspataGrid>
</form>

Assume that the DataGrid displays 5 records. When I click the "Edit"
link corresponding to the, say, 1st record, apart from all fields
(editable & non-editable) displayed in the DataGrid, the first 4 pairs
of Response.Write lines within the sub "EditUsers" produce the
following output:

Control0: System.Web.UI.LiteralControl
Control1: System.Web.UI.WebControls.Label
Control2: System.Web.UI.LiteralControl
Control Count: 3
Cell Count: 6

Can someone please explain me how ASP.NET computes the control count to
3? The Label control under the 1st column named "NAME" makes up 1 of
the 3 controls but what/where are the other 2 Literal controls?

Thanks,

Arpan


Reply With Quote
  #2  
Old   
Ken Cox [Microsoft MVP]
 
Posts: n/a

Default Re: Controls In DataGrid? - 08-06-2006 , 09:01 PM






The easiest way to check for yourself is to put trace="true" in <%@ page
%>.

You'll see all the controls and their containers in a nice grid so you can
count for yourself.

"Arpan" <arpan_de (AT) hotmail (DOT) com> wrote

Quote:
Consider the following code which retrieves data from a SQL Server 2005
DB table & displays it in a DataGrid:

script runat="server"
Sub Page_Load(ByVal obj As Object, ByVal ea As EventArgs)
Dim dSet As DataSet
Dim sqlConn As SqlConnection
Dim sqlDapter As SqlDataAdapter

sqlConn = New SqlConnection("Data Source=AD\SQLEXPRESS;Initial
Catalog=MyDB;Integrated Security=True")
sqlDapter = New SqlDataAdapter("SELECT * FROM Users", sqlConn)

dSet = New DataSet()
sqlDapter.Fill(dSet, "Users")

dgUsers.DataSource = dSet.Tables("Users").DefaultView
dgUsers.DataBind()
End Sub

Sub EditUsers(ByVal obj As Object, ByVal ea As
DataGridCommandEventArgs)
dgUsers.EditItemIndex = ea.Item.ItemIndex
dgUsers.DataBind()

Response.Write(Control0: ")
Response.Write(ea.Item.Cells(0).Controls(0))

Response.Write("<br>Control1: ")
Response.Write(ea.Item.Cells(0).Controls(1))

Response.Write("<br>Control2: ")
Response.Write(ea.Item.Cells(0).Controls(2))

Response.Write("<br>Control Count: " &
ea.Item.Cells(0).Controls.Count)
Response.Write("<br>Cell Count: " & ea.Item.Cells.Count)

'Response.Write("<br>Control3: ")
'Response.Write(ea.Item.Cells(0).Controls(3))
End Sub
/script

form runat="server"
aspataGrid ID="dgUsers" OnEditCommand="EditUsers"
AutoGenerateColumns="false" runat="server"
Columns
asp:TemplateColumn HeaderText="NAME"
ItemTemplate
asp:Label ID="lblName" runat="server"><%#
Container.DataItem("FirstName") %> <%#
Container.DataItem("LastName") %></asp:Label
/ItemTemplate
/asp:TemplateColumn
asp:BoundColumn HeaderText="ADDRESS" DataField="Address"/
asp:BoundColumn HeaderText="CITY" DataField="City"/
asp:BoundColumn HeaderText="STATE" DataField="State"/
asp:BoundColumn HeaderText="ZIP" DataField="Zip"/
asp:EditCommandColumn HeaderText="EDIT" CancelText="CANCEL"
EditText="EDIT" UpdateText="UPDATE"/
/Columns
/aspataGrid
/form

Assume that the DataGrid displays 5 records. When I click the "Edit"
link corresponding to the, say, 1st record, apart from all fields
(editable & non-editable) displayed in the DataGrid, the first 4 pairs
of Response.Write lines within the sub "EditUsers" produce the
following output:

Control0: System.Web.UI.LiteralControl
Control1: System.Web.UI.WebControls.Label
Control2: System.Web.UI.LiteralControl
Control Count: 3
Cell Count: 6

Can someone please explain me how ASP.NET computes the control count to
3? The Label control under the 1st column named "NAME" makes up 1 of
the 3 controls but what/where are the other 2 Literal controls?

Thanks,

Arpan




Reply With Quote
Reply




Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.