Sideway
output.to from Sideway
Draft for Information Only

Content

Web Forms Control ID Resolution
 The Naming Container
 Name Resolution in Data-Binding Scenarios
 ID Resolution Examples
   Examples of Visual C# ASP.NET ID Resolution
   Examples of Visual Basic ASP.NET ID Resolution
 ID Resolution Examples
   Examples of Visual C# ASP.NET ID Resolution
   Examples of Visual Basic ASP.NET ID Resolution
 See Also
 Tasks
 Concepts
 Sources and References

Web Forms Control ID Resolution

When you declare an ID attribute on a Web server control to provide programmatic access to that control, the ASP.NET page framework automatically ensures that the ID you declare will be unique across your entire ASP.NET Web application.

The Naming Container

The ASP.NET page framework provides your applications with automatic control ID resolution through the INamingContainer interface, which generates a naming container for each class that implements it. A naming container defines a new ID namespace within an ASP.NET Web page control hierarchy. A naming container then allows the page framework to generate a value for the UniqueID property of each Control object generated within that namespace. The UniqueID property is different from the ID property that you declare in that it is the fully qualified identifier for a control.
The classes that implement INamingContainer include: Page, DataList, GridView, DataListItem, DataGridItem, and Repeater. In general, controls that can create child controls dynamically implement INamingContainer.
The Page class serves as the top-level naming container for that page's control hierarchy.

Name Resolution in Data-Binding Scenarios

The automatic naming resolution provided by the page framework becomes important in data-binding scenarios. Consider the following example, which shows controls declared on a page.

ID Resolution Examples

Examples of Visual C# ASP.NET ID Resolution

ASP.NET Code Input:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1" runat="server">
        <title>Sample Page</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <%@ Page Language="C#"%>
        <script runat="server" >
            public void Page_Load()
            {
                String[] myStringArray = new String[] {"one","two","three"};
                rptr.DataSource = myStringArray;
                rptr.DataBind();
                MyDataList.DataSource = myStringArray;
                MyDataList.DataBind();
                MyDataList1.DataSource = myStringArray;
                MyDataList1.DataBind();
            }
            
            protected void OnItemCreated(object sender, RepeaterItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    RepeaterItem item = e.Item;
                    Control customerId = item.FindControl("MyLabel") ;
                    OnItemCreatedMyLabel.Text=(customerId as Label).ClientID.ToString() ;
                }
            }
            
            protected void OnItemDataBound(object sender, RepeaterItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    RepeaterItem item = e.Item;
                    Control customerId = item.FindControl("MyLabel") ;
                    OnItemDataBoundMyLabel.Text=(customerId as Label).ClientID.ToString() ;
                }
            }
            
            private Control FindControlRecursive(Control rootControl, string controlID)
            {
                if (rootControl.ID == controlID) return rootControl;

                foreach (Control controlToSearch in rootControl.Controls)
                {
                    Control controlToReturn =
                        FindControlRecursive(controlToSearch, controlID);
                    if (controlToReturn != null) return controlToReturn;
                }
                return null;
            }
            
        </script>
    </head>
    <body>
        <%Response.Write("<p>Results on "+ Request.ServerVariables["SERVER_SOFTWARE"] + " .net: " + System.Environment.Version + "</p>");%>
        <asp:repeater id=rptr runat="server">
            <itemtemplate>Container.DataItem: <%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
        <hr />


        <asp:repeater id="MyDataList" runat="server">
            <ItemTemplate>
                Container.ToString(): <asp:Label id="MyLabel" Text="<%# Container.ToString() %>" runat="server"/><br />
            </ItemTemplate>
        </asp:repeater>
        <hr />
        <asp:Label id="ResultsLabel" runat="server" AssociatedControlID="MyDataList"/>
        <hr />


        <asp:repeater id="MyDataList1" runat="server" OnItemCreated = "OnItemCreated" OnItemDataBound = "OnItemDataBound">
            <ItemTemplate>
                Container.ItemIndex: <asp:Label id="MyLabel" Text="<%# Container.ItemIndex %>" runat="server"/><br />
            </ItemTemplate>
        </asp:repeater>
        <hr />
        <asp:Label id="ResultsLabel1" runat="server" AssociatedControlID="MyDataList1"/>
        <hr />

        The identifications of MyLabel:
        <hr />
        FindControlRecursive(MyDataList,"MyLabel").ID: <%=FindControlRecursive(MyDataList,"MyLabel").ID %><br />
        FindControlRecursive(MyDataList1,"MyLabel").ID: <%=FindControlRecursive(MyDataList1,"MyLabel").ID %><br />
        FindControlRecursive(MyDataList,"MyLabel").ClientID: <%=FindControlRecursive(MyDataList,"MyLabel").ClientID %><br />
        FindControlRecursive(MyDataList1,"MyLabel").ClientID: <%=FindControlRecursive(MyDataList1,"MyLabel").ClientID %><br />
        MyDataList1.OnItemCreated: <asp:Label id="OnItemCreatedMyLabel" Text=""  runat="server"/><br />
        MyDataList1.OnItemDataBound: <asp:Label id="OnItemDataBoundMyLabel" Text=""  runat="server"/><br />

        <hr />
    </body>
</html>
HTTP Response Output:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1"><title>
	Sample Page
</title><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /></head>
    <body>
        <p>Results on Microsoft-IIS/8.5 .net: 4.0.30319.42000</p>Container.DataItem: one<br>Container.DataItem: two<br>Container.DataItem: three<br>
        <hr />


                 Container.ToString(): <span id="MyDataList_MyLabel_0">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ToString(): <span id="MyDataList_MyLabel_1">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ToString(): <span id="MyDataList_MyLabel_2">System.Web.UI.WebControls.RepeaterItem</span><br />
             <hr />
        <label for="MyDataList" id="ResultsLabel"></label>
        <hr />


                 Container.ItemIndex: <span id="MyDataList1_MyLabel_0">0</span><br />
                     Container.ItemIndex: <span id="MyDataList1_MyLabel_1">1</span><br />
                     Container.ItemIndex: <span id="MyDataList1_MyLabel_2">2</span><br />
             <hr />
        <label for="MyDataList1" id="ResultsLabel1"></label>
        <hr />

        The identifications of MyLabel:
        <hr />
        FindControlRecursive(MyDataList,"MyLabel").ID: MyLabel<br />
        FindControlRecursive(MyDataList1,"MyLabel").ID: MyLabel<br />
        FindControlRecursive(MyDataList,"MyLabel").ClientID: MyDataList_MyLabel_0<br />
        FindControlRecursive(MyDataList1,"MyLabel").ClientID: MyDataList1_MyLabel_0<br />
        MyDataList1.OnItemCreated: <span id="OnItemCreatedMyLabel">MyLabel_2</span><br />
        MyDataList1.OnItemDataBound: <span id="OnItemDataBoundMyLabel">MyDataList1_MyLabel_2</span><br />

        <hr />
    </body>
</html>
HTML Web Page Embedded Output:

Examples of Visual Basic ASP.NET ID Resolution

ASP.NET Code Input:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1" runat="server">
        <title>Sample Page</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <%@ Page Language="vb"%>
        <script runat="server" >
            public sub Page_Load()
                Dim myStringArray as String()
                myStringArray = new String() {"one","two","three"}
                rptr.DataSource = myStringArray
                rptr.DataBind()
                MyDataList.DataSource = myStringArray
                MyDataList.DataBind()
                MyDataList1.DataSource = myStringArray
                MyDataList1.DataBind()
            end sub

            Protected Sub OnItemCreated(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
                If (e.Item.ItemType = ListItemType.Item or e.Item.ItemType = ListItemType.AlternatingItem) Then
                    Dim item As RepeaterItem = e.Item
                    Dim customerId As Control = item.FindControl("MyLabel")
                    OnItemCreatedMyLabel.Text=TryCast(customerId, Label).ClientID.ToString()
                End If
            End Sub

            Protected Sub OnItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs)
                If (e.Item.ItemType = ListItemType.Item or e.Item.ItemType = ListItemType.AlternatingItem) Then
                    Dim item As RepeaterItem = e.Item
                    Dim customerId As Control = item.FindControl("MyLabel")
                    OnItemDataBoundMyLabel.Text=TryCast(customerId, Label).ClientID.ToString()
                End If
            End Sub

            Private Function FindControlRecursive(ByVal rootControl As Control, ByVal controlID As String) As Control

                If rootControl.ID = controlID Then
                    Return rootControl
                End If

                For Each controlToSearch As Control In rootControl.Controls
                    Dim controlToReturn As Control = FindControlRecursive(controlToSearch, controlID)
                    If controlToReturn IsNot Nothing Then
                        Return controlToReturn
                    End If
                Next
                Return Nothing
            End Function

        </script>
    </head>
    <body>
        <%Response.Write("<p>Results on "& Request.ServerVariables("SERVER_SOFTWARE") & " .net: " & System.Environment.Version.ToString & " " & ScriptEngine & " Version " & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "</p>")%>
        <asp:repeater id=rptr runat="server">
            <itemtemplate>Container.DataItem: <%# Container.DataItem %><br></itemtemplate>
        </asp:repeater>
        <hr />


        <asp:repeater id="MyDataList" runat="server">
            <ItemTemplate>
                Container.ToString(): <asp:Label id="MyLabel" Text="<%# Container.ToString() %>" runat="server"/><br />
            </ItemTemplate>
        </asp:repeater>
        <hr />
        <asp:Label id="ResultsLabel" runat="server" AssociatedControlID="MyDataList"/>
        <hr />


        <asp:repeater id="MyDataList1" runat="server" OnItemCreated = "OnItemCreated" OnItemDataBound = "OnItemDataBound">
            <ItemTemplate>
                Container.ItemIndex: <asp:Label id="MyLabel" Text="<%# Container.ItemIndex %>" runat="server"/><br />
            </ItemTemplate>
        </asp:repeater>
        <hr />
        <asp:Label id="ResultsLabel1" runat="server" AssociatedControlID="MyDataList1"/>
        <hr />

        The identifications of MyLabel:
        <hr />
        FindControlRecursive(MyDataList,"MyLabel").ID: <%=FindControlRecursive(MyDataList,"MyLabel").ID %><br />
        FindControlRecursive(MyDataList1,"MyLabel").ID: <%=FindControlRecursive(MyDataList1,"MyLabel").ID %><br />
        FindControlRecursive(MyDataList,"MyLabel").ClientID: <%=FindControlRecursive(MyDataList,"MyLabel").ClientID %><br />
        FindControlRecursive(MyDataList1,"MyLabel").ClientID: <%=FindControlRecursive(MyDataList1,"MyLabel").ClientID %><br />
        MyDataList1.OnItemCreated: <asp:Label id="OnItemCreatedMyLabel" Text=""  runat="server"/><br />
        MyDataList1.OnItemDataBound: <asp:Label id="OnItemDataBoundMyLabel" Text=""  runat="server"/><br />

        <hr />
    </body>
</html>
HTTP Response Output:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1"><title>
	Sample Page
</title><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /></head>
    <body>
        <p>Results on Microsoft-IIS/8.5 .net: 4.0.30319.42000 VB Version 14.0</p>Container.DataItem: one<br>Container.DataItem: two<br>Container.DataItem: three<br>
        <hr />


                 Container.ToString(): <span id="MyDataList_MyLabel_0">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ToString(): <span id="MyDataList_MyLabel_1">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ToString(): <span id="MyDataList_MyLabel_2">System.Web.UI.WebControls.RepeaterItem</span><br />
             <hr />
        <label for="MyDataList" id="ResultsLabel"></label>
        <hr />


                 Container.ItemIndex: <span id="MyDataList1_MyLabel_0">0</span><br />
                     Container.ItemIndex: <span id="MyDataList1_MyLabel_1">1</span><br />
                     Container.ItemIndex: <span id="MyDataList1_MyLabel_2">2</span><br />
             <hr />
        <label for="MyDataList1" id="ResultsLabel1"></label>
        <hr />

        The identifications of MyLabel:
        <hr />
        FindControlRecursive(MyDataList,"MyLabel").ID: MyLabel<br />
        FindControlRecursive(MyDataList1,"MyLabel").ID: MyLabel<br />
        FindControlRecursive(MyDataList,"MyLabel").ClientID: MyDataList_MyLabel_0<br />
        FindControlRecursive(MyDataList1,"MyLabel").ClientID: MyDataList1_MyLabel_0<br />
        MyDataList1.OnItemCreated: <span id="OnItemCreatedMyLabel">MyLabel_2</span><br />
        MyDataList1.OnItemDataBound: <span id="OnItemDataBoundMyLabel">MyDataList1_MyLabel_2</span><br />

        <hr />
    </body>
</html>
HTML Web Page Embedded Output:
When the Label control is bound to a data source and the Repeater control iterates through the items from that data source, the page must be able distinguish programmatically the different instances of the Label control, even though you have assigned only the ID MyLabel to each instance. The page framework does this by using the fully qualified UniqueID property for each control. For example, the following code generates three versions of the Label control and writes their UniqueID property values to the page.

ID Resolution Examples

Examples of Visual C# ASP.NET ID Resolution

ASP.NET Code Input:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1" runat="server">
        <title>Sample Page</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <%@ Page Language="C#"%>
        <script runat="server" >
            public void Page_Load(Object sender, EventArgs e)
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("Container: " + 
                    MyDataList.ID.ToString() + "<p>");

                ArrayList a = new ArrayList();
                a.Add("A");
                a.Add("B");
                a.Add("C");

                MyDataList.DataSource = a;
                MyDataList.DataBind();

                for (int i = 0; i < MyDataList.Controls.Count; i++)
                {
                    Label l =
                        (Label)((RepeaterItem)MyDataList.Controls[i]).FindControl("MyLabel");
                    sb.Append("Container: " +
                        ((RepeaterItem)MyDataList.Controls[i]).NamingContainer.ToString() +
                        "<p>");
                    sb.Append("<b>" + l.UniqueID + "</b><p>");
                }
                ResultsLabel.Text = sb.ToString();
            }
            
        </script>
    </head>
    <body>
        <%Response.Write("<p>Results on "+ Request.ServerVariables["SERVER_SOFTWARE"] + " .net: " + System.Environment.Version + "</p>");%>
        <asp:repeater id="MyDataList" runat="server">
            <ItemTemplate>
                Container.ID.ToString(): <asp:Label id="MyLabel" Text="<%# Container.ToString() %>" runat="server"/><br />
            </ItemTemplate>
        </asp:repeater>
        <hr />
        <asp:Label id="ResultsLabel" runat="server" AssociatedControlID="MyDataList"/>
        <hr />

        <hr />
    </body>
</html>
HTTP Response Output:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1"><title>
	Sample Page
</title><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /></head>
    <body>
        <p>Results on Microsoft-IIS/8.5 .net: 4.0.30319.42000</p>
                Container.ID.ToString(): <span id="MyDataList_MyLabel_0">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ID.ToString(): <span id="MyDataList_MyLabel_1">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ID.ToString(): <span id="MyDataList_MyLabel_2">System.Web.UI.WebControls.RepeaterItem</span><br />
             <hr />
        <label for="MyDataList" id="ResultsLabel">Container: MyDataList<p>Container: System.Web.UI.WebControls.Repeater<p><b>MyDataList$ctl00$MyLabel</b><p>Container: System.Web.UI.WebControls.Repeater<p><b>MyDataList$ctl01$MyLabel</b><p>Container: System.Web.UI.WebControls.Repeater<p><b>MyDataList$ctl02$MyLabel</b><p></label>
        <hr />

        <hr />
    </body>
</html>
HTML Web Page Embedded Output:

Examples of Visual Basic ASP.NET ID Resolution

ASP.NET Code Input:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1" runat="server">
        <title>Sample Page</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
        <%@ Page Language="vb"%>
        <script runat="server" >
            public sub Page_Load()
                Dim sb As New StringBuilder()
                sb.Append("Container: " + _
                MyDataList.ID.ToString() + "<p>")

                Dim a As New ArrayList()
                a.Add("A")
                a.Add("B")
                a.Add("C")

                MyDataList.DataSource = a
                MyDataList.DataBind()

                Dim i As Integer
                Dim l As Label
                For i = 0 To MyDataList.Controls.Count - 1
                    l = CType(CType(MyDataList.Controls(i), RepeaterItem).FindControl("MyLabel"), Label)
                    sb.Append("Container: " & _
                        CType(MyDataList.Controls(i), RepeaterItem).NamingContainer.ToString() & _
                        "<p>")
                    sb.Append("<b>" & l.UniqueID.ToString() & "</b><p>")
                Next
                ResultsLabel.Text = sb.ToString()
            end sub

        </script>
    </head>
    <body>
        <%Response.Write("<p>Results on "& Request.ServerVariables("SERVER_SOFTWARE") & " .net: " & System.Environment.Version.ToString & " " & ScriptEngine & " Version " & ScriptEngineMajorVersion & "." & ScriptEngineMinorVersion & "</p>")%>
        <asp:repeater id="MyDataList" runat="server">
            <ItemTemplate>
                Container.ID.ToString(): <asp:Label id="MyLabel" Text="<%# Container.ToString() %>" runat="server"/><br />
            </ItemTemplate>
        </asp:repeater>
        <hr />
        <asp:Label id="ResultsLabel" runat="server" AssociatedControlID="MyDataList"/>
        <hr />

        <hr />
    </body>
</html>
HTTP Response Output:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head id="Head1"><title>
	Sample Page
</title><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /></head>
    <body>
        <p>Results on Microsoft-IIS/8.5 .net: 4.0.30319.42000 VB Version 14.0</p>
                Container.ID.ToString(): <span id="MyDataList_MyLabel_0">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ID.ToString(): <span id="MyDataList_MyLabel_1">System.Web.UI.WebControls.RepeaterItem</span><br />
                     Container.ID.ToString(): <span id="MyDataList_MyLabel_2">System.Web.UI.WebControls.RepeaterItem</span><br />
             <hr />
        <label for="MyDataList" id="ResultsLabel">Container: MyDataList<p>Container: System.Web.UI.WebControls.Repeater<p><b>MyDataList$ctl00$MyLabel</b><p>Container: System.Web.UI.WebControls.Repeater<p><b>MyDataList$ctl01$MyLabel</b><p>Container: System.Web.UI.WebControls.Repeater<p><b>MyDataList$ctl02$MyLabel</b><p></label>
        <hr />

        <hr />
    </body>
</html>
HTML Web Page Embedded Output:
When this page is requested, it writes the following to the page: The naming container of the Repeater control named MyDataList. This naming container depends upon the name given to the .aspx file. Note If the .aspx file for this example were MySample1.aspx, the class of the naming container would be ASP.mysample1_aspx, but the naming container would be Page. The instance of the next control that serves as a naming container, namely the Repeater control. This container name is displayed with its entire namespace qualifier. The UniqueID property of each Label control inside the Repeater control. Note Do not write code that references controls using the value of the generated UniqueID property. You can treat the UniqueID property as a handle (for example, by passing it to a process), but you should not rely on it having a specific structure.

See Also

Tasks

Concepts

Sources and References

  • https://docs.microsoft.com/en-us/previous-versions/aspnet/hw8sf6fb(v=vs.100)

©sideway

ID: 211000018 Last Updated: 10/18/2021 Revision: 0 Ref:

close

References

  1. Active Server Pages,  , http://msdn.microsoft.com/en-us/library/aa286483.aspx
  2. ASP Overview,  , http://msdn.microsoft.com/en-us/library/ms524929%28v=vs.90%29.aspx
  3. ASP Best Practices,  , http://technet.microsoft.com/en-us/library/cc939157.aspx
  4. ASP Built-in Objects,  , http://msdn.microsoft.com/en-us/library/ie/ms524716(v=vs.90).aspx
  5. Response Object,  , http://msdn.microsoft.com/en-us/library/ms525405(v=vs.90).aspx
  6. Request Object,  , http://msdn.microsoft.com/en-us/library/ms524948(v=vs.90).aspx
  7. Server Object (IIS),  , http://msdn.microsoft.com/en-us/library/ms525541(v=vs.90).aspx
  8. Application Object (IIS),  , http://msdn.microsoft.com/en-us/library/ms525360(v=vs.90).aspx
  9. Session Object (IIS),  , http://msdn.microsoft.com/en-us/library/ms524319(8v=vs.90).aspx
  10. ASPError Object,  , http://msdn.microsoft.com/en-us/library/ms524942(v=vs.90).aspx
  11. ObjectContext Object (IIS),  , http://msdn.microsoft.com/en-us/library/ms525667(v=vs.90).aspx
  12. Debugging Global.asa Files,  , http://msdn.microsoft.com/en-us/library/aa291249(v=vs.71).aspx
  13. How to: Debug Global.asa files,  , http://msdn.microsoft.com/en-us/library/ms241868(v=vs.80).aspx
  14. Calling COM Components from ASP Pages,  , http://msdn.microsoft.com/en-us/library/ms524620(v=VS.90).aspx
  15. IIS ASP Scripting Reference,  , http://msdn.microsoft.com/en-us/library/ms524664(v=vs.90).aspx
  16. ASP Keywords,  , http://msdn.microsoft.com/en-us/library/ms524672(v=vs.90).aspx
  17. Creating Simple ASP Pages,  , http://msdn.microsoft.com/en-us/library/ms524741(v=vs.90).aspx
  18. Including Files in ASP Applications,  , http://msdn.microsoft.com/en-us/library/ms524876(v=vs.90).aspx
  19. ASP Overview,  , http://msdn.microsoft.com/en-us/library/ms524929(v=vs.90).aspx
  20. FileSystemObject Object,  , http://msdn.microsoft.com/en-us/library/z9ty6h50(v=vs.84).aspx
  21. http://msdn.microsoft.com/en-us/library/windows/desktop/ms675944(v=vs.85).aspx,  , ADO Object Model
  22. ADO Fundamentals,  , http://msdn.microsoft.com/en-us/library/windows/desktop/ms680928(v=vs.85).aspx
close

Latest Updated LinksValid XHTML 1.0 Transitional Valid CSS!Nu Html Checker Firefox53 Chromena IExplorerna
IMAGE

Home 5

Business

Management

HBR 3

Information

Recreation

Hobbies 8

Culture

Chinese 1097

English 337

Reference 68

Computer

Hardware 156

Software

Application 207

Digitization 25

Latex 35

Manim 203

Numeric 19

Programming

Web 285

Unicode 504

HTML 65

CSS 65

SVG 9

ASP.NET 270

OS 422

DeskTop 7

Python 66

Knowledge

Mathematics

Formulas 8

Algebra 84

Number Theory 206

Trigonometry 31

Geometry 32

Coordinate Geometry 1

Calculus 67

Complex Analysis 21

Engineering

Tables 8

Mechanical

Mechanics 1

Rigid Bodies

Statics 92

Dynamics 37

Fluid 5

Fluid Kinematics 5

Control

Process Control 1

Acoustics 19

FiniteElement 2

Natural Sciences

Matter 1

Electric 27

Biology 1

Geography 1


Copyright © 2000-2021 Sideway . All rights reserved Disclaimers last modified on 06 September 2019