Blue Theme Orange Theme Green Theme Red Theme
 
Home | Forums | Videos | Photos | Blogs | Beginners
 | Consulting  
Submit an Article Submit a Blog 
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
 Resources  
Close
 Our Network  
Close
Search :       Advanced Search »
Home » VB.NET » Embedded Datagrids with Add, Edit and Delete funtionality

Embedded Datagrids with Add, Edit and Delete funtionality


This article features an embedded Datagrids with Add, Edit and Delete funtionality.

Total page views :  13763
Total downloads : 
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
Become a Sponsor

The database for this page is

Project_Group_Type (Master Table)
columns (Basic ones):  

Project_Group_Type_ID Description
1 New

Project_Group (Details Table)
columns(Basic ones) :   
Column Name Value
Project_Group_ID 1
Project_Group_Type_ID 1
Project_Group_Description Check


The DataSource

The data source for the Master Datagrid consists of these columns: Project_Group_Type_ID, Description

The data source for the Details Datagrid consists of these columns: Project_Group_ID Project_Group_Type_ID Project_Group_Description

The Datagrid is within another Datagrid (Figure 1).The master Datagrid has project categories Type  and details Datagrid have projects Categories. The detail table has a foreign to the master table.

 



Figure 1

The details Datagrid is expanded as shown in Figure 2.

Figure 2

Now the user can add/edit/delete row to the master/details Datagrid. Now I have created this as user control and used in other aspx pages.

The code is as follows. Declare the Datagrid with following attributes.

<asp:DataGrid ID="dgProjectGroupType" ShowFooter="True" ShowHeader="false" AutoGenerateColumns="False"

CellSpacing="0" BorderStyle="None" BorderWidth="0" GridLines="None" CellPadding="0" Width="100%" runat="server"            OnItemDataBound="dgProjectGroupType_ItemDataBound" OnItemCommand="dgProjectGroupType_ItemCommand">

I have enabled show footer = true in order to add new record for this grid. I have added a new row with textbox and add button. And since I donot require the header have set it to false. I have following events for

  • ItemDataBound: To bind the Inner grid with outer grid.
  • ItemCommand: Handling the events on the master like add,edit,cancel...etc

<FooterStyle Font-Size="Smaller"  />

<ItemStyle Font-Size="Smaller" />

<EditItemStyle BackColor="#CADDEE" Font-Size="Smaller" />

<SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True"       ForeColor="#333333" Font-Size="Smaller" />

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" Font-Size="Smaller" />

<HeaderStyle Font-Size="Smaller" />

<AlternatingItemStyle Font-Size="Smaller" />

This is style format I have used for grid, which self explanatory.

<Columns>

The "Columns" is declared under "<Columns>" tags since AutoGenerateColumns is "False".

 

<asp:TemplateColumn HeaderText="" >

<FooterTemplate>

           <asp:TextBox ID="addDescription" runat="Server" />

      </FooterTemplate>

      <ItemTemplate>

&nbsp;&nbsp;&nbsp; <b> <%#DataBinder.Eval(Container.DataItem,"Description")%>

</b>

      </ItemTemplate>

      <EditItemTemplate>

          <asp:TextBox ID="storDescription"

Text=

'<%# DataBinder.Eval(Container.DataItem,"Description")%>'

            runat="server" />

       </EditItemTemplate>

</asp:TemplateColumn>

The footer template, editItem template, item template  for this column are declared under "asp:TemplateColumn".

<asp:TemplateColumn HeaderText="">

<ItemTemplate>

<asp:Label ID="projectGroupTypeID" runat="server" Text=

'<%# DataBinder.Eval(Container.DataItem, "Project_Group_Type_Id")%>' Visible="False" />

      </ItemTemplate>

</asp:TemplateColumn>

This column is used for the editing the master records. This column is the primary key for this master table. Hence made invisible and retrived by the ID of lable and used in internal operations.

<asp:TemplateColumn HeaderText="">

<ItemTemplate>

<asp:DataGrid ID="dgProjectGroup" ShowFooter="True" ShowHeader="true" AutoGenerateColumns="False"

BorderWidth="0" GridLines="None" CellPadding="0" Width="100%" runat="server" OnItemCommand="dgProjectGroup_ItemCommand"

            OnItemDataBound="dgProjectGroup_OnItemDataBound">

 

                   <FooterStyle Font-Size="Smaller" />

            <ItemStyle Font-Size="Smaller" />

            <EditItemStyle BackColor="#CADDEE" Font-Size="Smaller" />

<SelectedItemStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" Font-Size="Smaller" />

<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" Font-Size="Smaller" />

<HeaderStyle Font-Size="Smaller" />

<AlternatingItemStyle Font-Size="Smaller" />

Here in the "asp:TemplateColumn" where columns are decalred, another datagrid is declared. I have following events for

  • ItemDataBound : refer See code in css.
  • ItemCommand  : Handling the events on the details grid like add, edit, cancel...etc

This is style format I have used for grid, which self explainatary.

<Columns>

The "Columns" is declared under "<Columns>" tags since AutoGenerateColumns is "False".

                   <asp:TemplateColumn HeaderText="">

                             <ItemTemplate>

<asp:Label ID="projectGroupDescription" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_Description")%>'

                  Width="275px" />

                    </ItemTemplate>

            <EditItemTemplate>

<asp:TextBox ID="txtGroup" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_Description") %>'

                  runat="server" Width="275px" />

                </EditItemTemplate>

      <FooterTemplate>

<asp:TextBox ID="addProject" runat="Server" Text="" />

<asp:TextBox ID="addProjectTypeID" runat="Server" Text="" Visible="False" />

            </FooterTemplate>

</asp:TemplateColumn>

Then in the detials datagrid ,Iam displaying the project group description in an itemTemplate,displaying in textbox in edit mode and displaying a empty text on footer of the datagrid.

<asp:TemplateColumn>

          <ItemTemplate>

<asp:Button ID="cmdEditprojectGroup" runat="server" Text="Edit" CommandName="EditGroup" />

<asp:Button ID="cmdDeleteprojectGroup" runat="server" Text="Delete" CommandName="DeleteGroup" />

            </ItemTemplate>

            <EditItemTemplate>

<asp:Button ID="cmdUpdateMeasure" runat="server" Text="Save" CommandName="SaveGroup" />

<asp:Button ID="cmdCancelEditprojectGroup" runat="server" Text="Cancel" CommandName="CancelGroup" />

            </EditItemTemplate>

<FooterStyle    VerticalAlign="Middle"></FooterStyle>

            <FooterTemplate>

<asp:Button ID="cmdAddMeasure" CommandName="InsertGroup" runat="server" Text="Add" />

            </FooterTemplate>

</asp:TemplateColumn>

Again in the details datagrid ,Iam displaying the Edit & delete buttons in an itemTemplate,displaying in save & cancel buttons in edit mode and displaying a add button on footer of the datagrid.

<asp:TemplateColumn HeaderText="" Visible="False">

                   <ItemTemplate>

<asp:Label ID="projectGroupTypeID" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "Project_Group_Type_ID")%>' Visible="False" />

            </ItemTemplate>

</asp:TemplateColumn>

 

<asp:TemplateColumn HeaderText="" Visible="False">

                   <ItemTemplate>

<asp:Label ID="projectGroupID" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_ID")%>' Visible="False" />

            </ItemTemplate>

</asp:TemplateColumn>

 

In the details Datagrid, projectGroupTypeID and projectGroupID are used displayed on the itemtemplate but not visible to users. As these are used for edit and deleting operations.

 

</Columns>

</asp:DataGrid>

End of Inner DataGrid

</ItemTemplate>

End of ItemTemplare of Master DataGrid.

Start of EditItemTemplare for Master DataGrid.

And this is EditItemTemplate for this column when editing. So by another grid in the edititemtemplate you can see still see inner datagrid while editing master Datagrid.

<EditItemTemplate>

<asp:DataGrid ID="dgProjectGroup_Edit" AutoGenerateColumns="False" CellSpacing="0"

SkinID="datagridSkinID" CssClass="dataTable" BorderStyle="None" BorderWidth="0"

GridLines="None" CellPadding="0" Width="100%" runat="server" OnItemCommand="dgProjectGroup_ItemCommand"

            OnItemDataBound="dgProjectGroup_OnItemDataBound">

            <Columns>

`                  <asp:TemplateColumn HeaderText="">

<FooterStyle Font-Size="Small" Font-Bold="false" Wrap="false" BackColor="White" />

                             <ItemTemplate>

<asp:Label ID="projectGroupDescription" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Project_Group_Description")%>'

                              Width="275px" />

                        </ItemTemplate>

 

                        <FooterTemplate>

<asp:TextBox ID="addProject" runat="Server" Text="" />

<asp:TextBox ID="addProjectTypeID" runat="Server" Text="" Visible="False" />

                        </FooterTemplate>

                  </asp:TemplateColumn>

            </Columns>

          </asp:DataGrid>

       </EditItemTemplate>

//end of EditItemTemplate

    </asp:TemplateColumn>

//end of TemplateColumn

    <asp:TemplateColumn>

          <ItemTemplate>

<asp:Button ID="cmdEditMeasure" runat="server" Text="Edit Category" CommandName="EditCategory" />

<asp:Button ID="cmdDeleteProjectGroupType" runat="server" Text="Delete Category" CommandName="DeleteCategory"

OnClientClick="return confirm('Are you sure you wish to Delete all?');" />

      </ItemTemplate>

      <EditItemTemplate>

<asp:Button ID="btnUpdateMeasure" runat="server" Text="Save Category" CommandName="SaveCategory" />

<asp:Button ID="cmdCancelEditProjectGroupType" runat="server" Text="Cancel Category" CommandName="CancelCategory" />

</EditItemTemplate>

<FooterStyle VerticalAlign="Middle"></FooterStyle>

<FooterTemplate>

<asp:Button ID="cmdAddCategory" CommandName="InsertCategory" runat="server" Text="Add Category" />

</FooterTemplate>

</asp:TemplateColumn>

Again in the Master datagrid, Iam displaying the Edit & delete buttons in an itemTemplate,displaying in save & cancel buttons in edit mode and displaying a add button on footer of the datagrid.

</Columns>

</asp:DataGrid>

End of master Datagrid.

The code File aspx.vb is follows .......

Private dsProject As DataSet

Private dsProjectGroupType As DataTable

Private dsProjectGroup As DataTable

Private projectGroupsAndTypes As ProjectGroupsAndTypes

Private strprojectGroupTypeID As String

Private typeCount As Integer

 

' <summary> 

' Handles the Load event of the Page control. 

' </summary> 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see cref="T:System.EventArgs"/> instance containing the event data.</param>

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    Try

        projectGroupsAndTypes = New ProjectGroupsAndTypes

        dsProjectGroupType = New DataTable

        dsProjectGroup = New DataTable

        typeCount = 0

        strprojectGroupTypeID = String.Empty

        If Not IsPostBack Then

            LoadData()

        End If

    Catch exception As System.Exception

        Throw exception

    End Try

End Sub

  

' <summary> 

' Loads the data. 

' </summary>

 

Private Sub LoadData()

    Try

        dsProjectGroupType = projectGroupsAndTypes.projectsGroupType

        dsProjectGroupType.TableName = "Master"

        dsProjectGroup = projectGroupsAndTypes.projectGroup

        dsProjectGroup.TableName = "Detail"

        dsProject = New DataSet

        dsProject.Tables.Add(dsProjectGroupType)

        dsProject.Tables.Add(dsProjectGroup)

        Dim relProjectGroups As DataRelation = New DataRelation("relProjectGroups", New DataColumn() {dsProject.Tables("Master").Columns("Project_Group_Type_ID")}, New DataColumn() {dsProject.Tables("Detail").Columns("Project_Group_Type_ID")})

        dsProject.Relations.Add(relProjectGroups)

        dgProjectGroupType.DataSource = dsProject.Tables("Master").DefaultView

        dgProjectGroupType.DataBind()

    Catch exception As System.Exception

        Throw exception

    End Try

End Sub

 

' <summary> 

' Handles the ItemDataBound event of the dgProjectGroupType control. 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see cref="T:System.Web.UI.WebControls.DataGridItemEventArgs"/> instance containing the event data.</param> 

'Here is where the detail grid is binded with data Source. 

'Here there are two cases when it is an  item or edititem. 

'dgProjectGroup gets binds, when grid is not in edit mode. 

'dgProjectGroup_Edit gets bind, when the gird is in edit mode. 

'Note dgProjectGroup is again datagrid as dgProjectGroup.

 

Protected Sub dgProjectGroupType_ItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

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

        Dim drvDesc As DataRowView = CType(e.Item.DataItem, DataRowView)

        If e.Item.ItemType = ListItemType.EditItem Then

            CType(e.Item.FindControl("dgProjectGroup_Edit"), DataGrid).DataSource = drvDesc.CreateChildView("relProjectGroups")

            CType(e.Item.FindControl("dgProjectGroup_Edit"), DataGrid).DataBind()

        Else

            CType(e.Item.FindControl("dgProjectGroup"), DataGrid).DataSource = drvDesc.CreateChildView("relProjectGroups")

            CType(e.Item.FindControl("dgProjectGroup"), DataGrid).DataBind()

        End If

    End If

End Sub

 

 

' Handles the ItemCommand event of the dgProjectGroupType control. 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see      cref="T:System.Web.UI.WebControls.DataGridCommandEventArgs"/> instance containing the event data.</param>

 

Public Sub dgProjectGroupType_ItemCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)

    If e.CommandName = "InsertCategory" Then

        Dim txtDescription As String = CType(e.Item.Cells(0).FindControl("addDescription"), TextBox).Text

        Dim valid As Boolean = True

        If (txtDescription.Equals(String.Empty)) Then

            valid = False

        End If

        LoadData()

    End If

    If e.CommandName = "DeleteCategory" Then

        Dim ProjectGroupTypeID As Integer = Convert.ToInt32(CType(e.Item.FindControl("projectGroupTypeID"), Label).Text)

        LoadData()

    End If

    If e.CommandName = "EditCategory" Then

        dgProjectGroupType.EditItemIndex = e.Item.ItemIndex

        LoadData()

    End If

    If e.CommandName = "SaveCategory" Then

        Dim ProjectGroupTypeID As Integer = Convert.ToInt32(CType((e.Item.Cells(1).Controls(1)), Label).Text)

        Dim ProjectGroupType As String = CType(e.Item.Cells(0).Controls(1), TextBox).Text

        dgProjectGroupType.EditItemIndex = -1

        LoadData()

    End If

    If e.CommandName = "CancelCategory" Then

        dgProjectGroupType.EditItemIndex = -1

        LoadData()

    End If

End Sub

 

'This is the important Procedure.Because the master ProjectTypeID is always binded with details Datagrid on the footer. 

'So, whenever the a new record is added to the details grid the, we have the foreign key(ProjectTypeID). 

'But there is no way around, other than this which I found to be quite simple and effective. 

'On the footer event of ItemDataBoung, I am adding the ProjectTypeID to textBox(ID = addProjectTypeID). 

'Since this events fires for every record od master table. 

'I am increamenting the count(typeCount) such that detail table are matched to the master table. 

'And this happens for the first time.But this event is fired whenever other edit event is fired on detials datagrid. 

'And value stored in the textbox(ProjectTypeID) might be corrupted. 

'So solution to this is else part.assiging the value which is already available in the details dataGrid.         

 

Public Sub dgProjectGroup_OnItemDataBound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)

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

        Dim drvDesc As DataRowView = CType(e.Item.DataItem, DataRowView)

        strprojectGroupTypeID = drvDesc.Row("Project_Group_Type_Id").ToString

    Else

        If e.Item.ItemType = ListItemType.Footer Then

            If strprojectGroupTypeID.Equals(String.Empty) Then

                CType(e.Item.FindControl("addProjectTypeID"), TextBox).Text = Convert.ToString((CType(projectGroupsAndTypes.projectsGroupType(programmeID), DataTable).Rows(typeCount))(0))

            Else

                CType(e.Item.FindControl("addProjectTypeID"), TextBox).Text = strprojectGroupTypeID

                strprojectGroupTypeID = ""

            End If

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

        End If

    End If

End Sub

 

' Handles the ItemCommand event of the dgProjectGroup control. 

' </summary> 

' <param name="sender">The source of the event.</param> 

' <param name="e">The <see                   cref="T:System.Web.UI.WebControls.DataGridCommandEventArgs"/>  

' instance containing the event data.</param>   

 

Public Sub dgProjectGroup_ItemCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)

    'insert new record

    If e.CommandName = "InsertGroup" Then

        Dim projectGroupTypeID As Integer = Convert.ToInt32(CType(e.Item.FindControl("addProjectTypeID"), TextBox).Text) 

        Dim txtinnerDescription As String = CType(e.Item.FindControl("addProject"), TextBox).Text 

        Dim valid As Boolean = True 

        If txtinnerDescription.Equals(String.Empty) Then 

            valid = False

        End If

        'Do ever is req here.or something like this.

        'projectGroupsAndTypes.AddProjectGroup

        '(projectGroupTypeID, txtinnerDescription);

        'Load and rebind the data

        LoadData() 

        'Delete the Record

    ElseIf e.CommandName = "DeleteGroup" Then 

        Dim projectGroupID As Integer = Convert.ToInt32(CType(e.Item.FindControl("projectGroupID"), Label).Text) 

        'SomeCode to delete the projectGroupID

        projectGroupsAndTypes.DeleteProjectGroup(projectGroupID) 

        'Bind and rebind the data

        LoadData() 

        'edits inner group

    ElseIf e.CommandName = "EditGroup" Then 

        'Another UserCode Goes here

        'Declare a temporary dataGrid and get referred to details datagrid.

        'Assingn the dataGird editItemIdex with Itemindex.

        Dim tmpDg As DataGrid = CType(sender, DataGrid) 

        tmpDg.EditItemIndex = CInt(e.Item.ItemIndex) 

        'delcare A dataview and get all records of the details //table.

        'And now filter the dataview with the //Project_Group_Type_ID (foreign key in the details //table and primary in the  master table)

        Dim dv As New DataView() 

        dv = projectGroupsAndTypes.projectGroup(programmeID).DefaultView 

        dv.Sort = "Project_Group_Type_ID" 

        'The Project_Group_Type_ID is obtained by the following code.

        Dim objExpr As Object = CType(e.Item.FindControl("projectGroupTypeID"), Label).Text 

        'Now assigning the filtered dataview back to the datagrid(ref as detail dataGrid)

        tmpDg.DataSource = dv.FindRows(objExpr) 

        tmpDg.DataBind() 

        ' saves edited data

    ElseIf e.CommandName = "SaveGroup" Then 

        Dim emp_id As Integer = e.Item.ItemIndex 

        Dim tmpDg As DataGrid = CType(sender, DataGrid) 

        'retriving the ProjectGroupID from hidden control

        Dim ProjectGroupID As Integer = Convert.ToInt32(CType(e.Item.FindControl("projectGroupID"), Label).Text) 

        'retriving the ProjectGroup from hidden control

        Dim ProjectGroup As String = CType(e.Item.FindControl("txtGroup"), TextBox).Text 

        'performing some action to save

        projectGroupsAndTypes.updateProjectGroup(ProjectGroupID, ProjectGroup)

         'cancelling the edit eventby setting edititemindex to -1

        tmpDg.EditItemIndex = -1 

        'delcare A dataview and get all records of the details //table.

        Dim dv As DataView = projectGroupsAndTypes.projectGroup(programmeID).DefaultView 

        dv.Sort = "Project_Group_Type_ID" 

        'The Project_Group_Type_ID is obtained by the following code.

        Dim objExpr As Object = CType(e.Item.FindControl("projectGroupTypeID"), Label).Text 

        'Now assigning the filtered dataview back to the datagrid(ref as detail dataGrid)

        tmpDg.DataSource = dv.FindRows(objExpr) 

        tmpDg.DataBind() 

        'cancel the action

    ElseIf e.CommandName = "CancelGroup" Then 

        Dim tmpDg As DataGrid = CType(sender, DataGrid) 

        tmpDg.EditItemIndex = -1 

        'delcare A dataview and get all records of the details //table.

        Dim dv As DataView = projectGroupsAndTypes.projectGroup(programmeID).DefaultView 

        dv.Sort = "Project_Group_Type_ID" 

        'The Project_Group_Type_ID is obtained by the following code.

        Dim objExpr As Object = CType(e.Item.FindControl("projectGroupTypeID"), Label).Text 

        'Now assigning the filtered dataview back to the datagrid(ref as detail dataGrid)

        tmpDg.DataSource = dv.FindRows(objExpr) 

        tmpDg.DataBind()

    End If

End Sub 'dgProjectGroup_ItemCommand

 

NOTE: THIS ARTICLE IS CONVERTED FROM C# TO VB.NET USING A CONVERSION TOOL. ORIGINAL ARTICLE CAN BE FOUND ON C# CORNER (http://www.c-sharpcorner.com/).

 

 


Login to add your contents and source code to this article
 About the author
 
Rammanohar
Working on Microsoft technologies.Presently on Asp.net and C# as a contractor.
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
SQL and .NET performance profiling in one place
Investigate SQL and .NET code side-by-side with ANTS Performance Profiler 6, so you can see which is causing the problem without switching tools.
Go.NET
Build custom interactive diagrams, network, workflow editors, flowcharts, or software design tools. Includes many predefined kinds of nodes, links, and basic shapes. Supports layers, scrolling, zooming, selection, drag-and-drop, clipboard, in-place editing, tooltips, grids, printing, overview window, palette. 100% implemented in C# as a managed .NET Control. Document/View/Tool architecture with many properties&events. Optional automatic layout.
Dundas Software
Dundas Chart for .NET is the most advanced .NET charting package available today.  With an extremely complete feature set, elegant architecture and easy implementation, Dundas Chart can quickly add advanced Charting functionality to enhance and transform ASP.NET and Windows Forms applications.  Whether you are implementing charting into internal projects, or building applications for clients, Dundas Chart offers advanced technology and advanced results to get the most out of data.
60 FREE UI Controls from DevExpress
Register for your FREE copy on over 60 free presentation controls from DevExpress - Absolutely Free-of-Charge without any royalties or distribution costs. Visit Devexpress.com/60 today. Free controls include advanced lists box, dropdown calendar, rich text edit, spin edit, tab control and so much more!

DevExpress engineers feature rich presentation controls and reporting tools for WinForms, ASP.NET, WPF, and Silverlight. Our technologies help you build your best, see complex software with greater clarity and deliver compelling business solutions for Windows and the web in the shortest possible time.
Clickatell's SMS Gateway
Clickatell's Developer Solutions allow you to SMS enable any website or application via a range of API's. Learn More about our API connections.
Free access to .NET Memory Management video
Everything you need to know about Garbage Collection, Temporary Objects, Fragmentation, Finalization and common causes of memory leaks in .NET. Watch the video here.
Microsoft Visual Studio 2010
Visualize your workspace with new multiple monitor support, powerful Web development, new SharePoint support with tons of templates and Web parts, and more accurate targeting of any version of the .NET Framework. Get set to unleash your creativity.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
Developer-Ready ASP.NET 2.0 Web Hosting with 3 MONTHS FREE
Now supporting .NET 3.0 Framework with Windows Workflow Foundation, Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF), windows CardSpace (WCS)! Providing more flexibility for Developers with Web Services Support and a User/Permission Manger. Also supporting MS SQL 2005/2000 with Real-Time Backups, FREE Automated Attach .MDF Tool, FREE SQL Restore and Shrink SQL DB Tools, and SQL
Read the Top 10 Books for Microsoft Developers, 15 Days FREE
Read the Top 10 Books for Microsoft Developers, 15 Days FREE
Try Safari Books Online - 15 Days FREE + 15% Off for 1 Year
Try Safari Books Online - 15 Days FREE + 15% Off for 1 Year
 
 Post a Feedback, Comment, or Question about this article
Subject:
Comment:
Become a Sponsor
 Comments
problem by Neeraj On September 4, 2007
i am using nested datagrid embeedded in each other upto third level.when i click edit(pushbutton) of third(child) datagrid i am not able to reterieve third datagrid otherwise everything works perfectly.plz suggest me something.
Reply | Email | Delete | Modify | 

 Hosted by MaximumASP  |  Found a broken link?  |  Contact Us  |  Terms & conditions  |  Privacy Policy  |  Site Map  |  Suggest an Idea  |  Media Kit
Current Version: 5.2010.8.14
 © 2010  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.