Hi,<BR><BR>Can someone please tell me how I can add rows to a datagrid (one at a time) by clicking a button. <BR>I can add one row, but if I add another one it replaces the first??<BR><BR>my code:<BR>******************************************<BR>Public Cart As New DataTable()<BR><BR>Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<BR> If Page.IsPostBack Then<BR> myDatagrid.AutoGenerateColumns = True<BR> Cart.Columns.Add(New DataColumn("Item", GetType(String)))<BR> Cart.Columns.Add(New DataColumn("Price", GetType(String)))<BR> End If<BR>End Sub<BR><BR>Private Sub btnAddItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddItem.Click<BR>Dim dr As DataRow = Cart.NewRow()<BR><BR> dr(0) = myDropdownlist.SelectedItem.Value<BR> dr(1) = myDropdownlist.SelectedItem.Text<BR> Cart.Rows.Add(dr)<BR> myDatagrid.DataSource = Cart<BR> myDatagrid.DataBind()<BR>End Sub<BR>******************************************<BR><BR>Thanx by advance.<BR><BR><BR>This is a complete example of adding blank (or filled) rows to a datagrid as needed. You should be able to pick out the code you need.<BR><BR>Good Luck.<BR><BR><%@ Page Language="VB" Debug = "True" %><BR><%@ Import NameSpace="System.Data" %><BR><%@ Import NameSpace="System.Xml" %><BR><BR><BR><SCRIPT RUNAT="SERVER"><BR>' ================================================== ===============<BR>' DEMO OF WORKING WITH DATA IN A DISCONNECTED STATE, THEN SAVING CHANGES<BR>' BACK TO SOURCE DATABASE WHEN YOU'RE READY.<BR>'<BR>' DATAGRID HAS ABILITY TO ADD BLANK ROWS AS NEEDED.<BR>' ================================================== ===============<BR><BR>Dim objDataSet As New DataSet("objDataSet")<BR><BR>Dim xmlTestTable As DataTable = objDataSet.Tables.Add("xmlTestTable")<BR><BR>Dim strXML As String<BR><BR><BR>Sub Page_Load(obj as Object, e as EventArgs)<BR><BR> ' === SPECIFY COLUMNS SINCE A BLANK ROW CAN BE ADDED.<BR><BR> With objDataSet.Tables("xmlTestTable") <BR><BR> .Columns.Add("FName", System.Type.GetType("System.String"))<BR><BR> .Columns.Add("LName", System.Type.GetType("System.String"))<BR><BR> End With<BR><BR> ' === FIRST TIME THRU, SAVE A COPY OF DATASET TO VIEWSTATE.<BR><BR> If Not Page.IsPostBack Then<BR><BR> FirstRow()<BR> objDGrid.EditItemIndex = 0<BR> BindIt()<BR><BR> End If<BR><BR> GetIt() ' GET DATA FROM VIEWSTATE.<BR><BR>End Sub<BR><BR> ' === SaveIt SUB CONVERTS DATASET TO XML STRING AN PUTS IN VIEWSTATE.<BR><BR>Sub SaveIt()<BR><BR> strXML = objDataSet.GetXml()<BR><BR> ViewState("strData")=strXML <BR> <BR>End Sub<BR><BR> ' === GetIt SUB GETS XMLSTRING FROM VIEWSTATE AND RECREATES DATASET.<BR><BR>Sub GetIt()<BR><BR> If Not ViewState("strData") Is Nothing then<BR><BR> objDataSet.Clear()<BR><BR> strXML = ViewState("strData").ToString() <BR><BR> Dim strReader As New System.IO.StringReader(strXML) <BR><BR> objDataSet.Readxml(strReader) <BR><BR> End If<BR><BR>End Sub<BR><BR> ' === ADD A NEW ROW WHEN PAGE IS FIRST LOADED.<BR><BR>Sub FirstRow()<BR><BR> GetIt() <BR><BR> Dim AddaRow As DataRow = objDataSet.Tables("xmlTestTable").NewRow()<BR><BR> AddaRow.Item("FName") = " "<BR> AddaRow.Item("LName") = " "<BR><BR> objDataSet.Tables("xmlTestTable").Rows.Add(AddaRow)<BR><BR> SaveIt() <BR><BR>End Sub<BR><BR><BR> ' === ADD A NEW ROW TO DATASET. BLANK ROW ENTRY IS OK.<BR><BR>Sub AddRow(obj as Object, e as EventArgs)<BR><BR> GetIt() <BR><BR> Dim AddaRow As DataRow = objDataSet.Tables("xmlTestTable").NewRow()<BR><BR> AddaRow.Item("FName") = " "<BR> AddaRow.Item("LName") = " "<BR><BR> objDataSet.Tables("xmlTestTable").Rows.Add(AddaRow)<BR><BR> SaveIt() ' SAVE REVISED DS TO VIEWSTATE.<BR> <BR> BindIt() ' REBIND REVISED DS TO GRID.<BR><BR>End Sub<BR><BR> ' === STANDARD SUB FOR BINDING DATASET TO DATAGRID.<BR><BR>Sub BindIt()<BR><BR> objDGrid.DataSource = objDataSet.Tables("xmlTestTable")<BR><BR> objDGrid.DataBind()<BR><BR>End Sub<BR><BR> ' === EDIT LINK CLICKED ON DATAGRID. PUT GRID IN EDIT MODE.<BR><BR>Sub EditGrid(obj as object, e as DataGridCommandEventArgs)<BR><BR> GetIt()<BR> objDGrid.EditItemIndex = e.Item.ItemIndex<BR> SaveIt()<BR> BindIt()<BR><BR>End Sub<BR><BR> ' === CANCEL LINK CLICKED ON DATAGRID. <BR><BR>Sub CancelGrid(obj as object, e as DataGridCommandEventArgs)<BR> <BR> GetIt()<BR> objDGrid.EditItemIndex = -1<BR> SaveIt()<BR> BindIt()<BR><BR>End Sub<BR><BR> ' === UPDATE LINK CLICKED ON DATAGRID. UPDATE DATASET WITH DATAGRID EDITS.<BR><BR>Sub UpDateGrid(obj As object, e As DataGridCommandEventArgs)<BR><BR> Dim gRow As Integer = objDGrid.EditItemIndex ' ROW NUMBER OF ROW IN EDIT MODE.<BR><BR> Dim txtFName As TextBox = e.Item.Cells(0).Controls(0)<BR> Dim txtLName As TextBox = e.Item.Cells(1).Controls(0)<BR><BR> GetIt() ' GET COPY OF DS<BR><BR> objDataSet.Tables("xmlTestTable").Rows(gRow)(0) = txtFName.text<BR> objDataSet.Tables("xmlTestTable").Rows(gRow)(1) = txtLName.text<BR><BR> objDGrid.EditItemIndex = -1 ' TAKE GRID OUT OF EDIT MODE.<BR><BR> SaveIt() ' SAVE CHANGES TO DS<BR><BR> BindIt() ' RE-BIND GRID.<BR><BR>End Sub<BR><BR> ' === SUB TO SAVE DATASET CHANGES BACK TO SOURCE DATABASE.<BR><BR>Sub SaveAll(obj as Object, e as EventArgs)<BR><BR> Response.Write("Your DataBase Update Sub Would Run At This Point")<BR><BR>End Sub <BR><BR></SCRIPT><BR><BR><BR><BR><HTML><BODY><BR><BR> <FORM Runat="Server" EnableViewState = "True" ><BR><BR> <ASP:Button ID="btnSubmit" <BR> Text="Add New Row" <BR> Runat="Server" <BR> OnClick="AddRow" /><BR><BR> <BR/><BR/><BR><BR><BR> <ASP
ataGrid ID="objDGrid"<BR> Runat="Server"<BR> OnEditCommand = "EditGrid"<BR> OnCancelCommand = "CancelGrid"<BR> OnUpdateCommand = "UpdateGrid"<BR> Width = "350" <BR> AutoGenerateColumns = "False"><BR><BR> <Columns><BR><BR> <ASP:BoundColumn HeaderText = "First Name" <BR> DataField = "FName"><BR> <ItemStyle Width = "150"/><BR><BR> </ASP:BoundColumn><BR><BR> <ASP:BoundColumn HeaderText = "Last Name" <BR> DataField = "LName"><BR> <ItemStyle Width = "150"/><BR><BR> </ASP:BoundColumn><BR><BR><BR> <ASP:EditCommandColumn<BR> EditText = "Add/Edit"<BR> CancelText = "Cancel"<BR> UpdateText = "Enter"<BR> ItemStyle-Wrap = "False"<BR> HeaderText = "Add/Edit" ><BR> <ItemStyle Font-Size = "8"/><BR><BR> </ASP:EditCommandColumn><BR><BR> </Columns><BR><BR> </ASP
ataGrid><BR><BR> </FORM><BR><BR></BODY></HTML>Thanx, it works.

