Home All Groups Group Topic Archive Search About

In-place Updating in Datagrid not working

Author
6 Apr 2005 7:23 AM
A P
Hi!

I have created a sample datagrid that can update data on a database. Please
help me solve the problem, I have attached both aspx and code behind
(aspx.vb):

______________________

datagrid.aspx

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="DataGrid.aspx.vb"
Inherits="vs_2310.DataGrid"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
  <title>DataGrid</title>
  <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <asp:DataGrid id=DataGrid1 style="Z-INDEX: 101; LEFT: 51px; POSITION:
absolute; TOP: 51px" runat="server" DataSource="<%# DataSet21 %>"
DataKeyField="NounID" BorderColor="#CC9966" BorderStyle="None"
BorderWidth="1px" BackColor="White" CellPadding="4" Font-Size="10pt"
AutoGenerateColumns="False" Font-Names="Arial" AllowPaging="True">
    <SelectedItemStyle Font-Bold="True" ForeColor="#663399"
BackColor="#FFCC66"></SelectedItemStyle>
    <ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle>
    <HeaderStyle Font-Bold="True" ForeColor="#FFFFCC"
BackColor="#990000"></HeaderStyle>
    <FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle>
    <Columns>
     <asp:BoundColumn DataField="NounID" SortExpression="NounID"
HeaderText="ID"></asp:BoundColumn>
     <asp:BoundColumn DataField="NounDesc" SortExpression="NounDesc"
HeaderText="Noun"></asp:BoundColumn>
     <asp:TemplateColumn HeaderText="Action">
      <ItemTemplate>
       <asp:LinkButton runat="server" Text="Edit" CommandName="Edit"
CausesValidation="false"></asp:LinkButton>
      </ItemTemplate>
      <EditItemTemplate>
       <asp:LinkButton runat="server" Text="Update"
CommandName="Update"></asp:LinkButton>&nbsp;
       <asp:LinkButton runat="server" Text="Cancel" CommandName="Cancel"
CausesValidation="false"></asp:LinkButton>
      </EditItemTemplate>
     </asp:TemplateColumn>
    </Columns>
    <PagerStyle HorizontalAlign="Center" ForeColor="#330099"
BackColor="#FFFFCC"></PagerStyle>
   </asp:DataGrid>
   <asp:Label id="Label1" style="Z-INDEX: 102; LEFT: 51px; POSITION:
absolute; TOP: 17px" runat="server">Label</asp:Label>
  </form>
</body>
</HTML>

________________________

datagrid.aspx.vb

Imports System.Data.OleDb
Public Class DataGrid
    Inherits System.Web.UI.Page


    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        OleDbDataAdapter1.Fill(DataSet21)
        DataGrid1.DataBind()
    End Sub

    Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.EditCommand
        DataGrid1.EditItemIndex() = e.Item.ItemIndex
        DataGrid1.DataBind()
    End Sub
    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.UpdateCommand
        Dim NounTable As DataSet2.tbltsNounDataTable

        NounTable = DataSet21.tbltsNoun

        Dim rowToUpdate As DataSet2.tbltsNounRow

        rowToUpdate = NounTable.Rows(e.Item.ItemIndex)
        rowToUpdate.NounDesc = CType(e.Item.Cells(1).Controls(0),
TextBox).Text

        OleDbDataAdapter1.Update(DataSet21)
        Label1.Text = rowToUpdate.NounDesc

        DataGrid1.EditItemIndex = -1
        DataGrid1.DataBind()
    End Sub

    Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e
As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles
DataGrid1.PageIndexChanged
        DataGrid1.CurrentPageIndex = e.NewPageIndex
        DataGrid1.DataBind()
    End Sub

    Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As
System.Web.UI.WebControls.DataGridCommandEventArgs) Handles
DataGrid1.CancelCommand
        DataGrid1.EditItemIndex = -1
        DataGrid1.DataBind()
    End Sub
End Class

___________________

Author
6 Apr 2005 7:44 AM
Juan T. Llibre
Hey, A P,

what *is* the problem you have ?



Juan T. Llibre
ASP.NET MVP
http://asp.net.do/foros/
Foros de ASP.NET en Español
Ven, y hablemos de ASP.NET...
======================

"A P" <a*@textguru.ph> wrote in message
news:umsuqlnOFHA.3296@TK2MSFTNGP15.phx.gbl...
> Hi!
>
> I have created a sample datagrid that can update data on a database.
> Please
> help me solve the problem, I have attached both aspx and code behind
> (aspx.vb):
>

....code snipped.
Author
6 Apr 2005 8:13 AM
A P
Data is not updating. I've already check on the database and the content is
not changed if I click on the update link. I'm using MS Access for the
database.

Me

Show quoteHide quote
"Juan T. Llibre" <nomailrepl***@nowhere.com> wrote in message
news:#3Jh5xnOFHA.2736@TK2MSFTNGP09.phx.gbl...
> Hey, A P,
>
> what *is* the problem you have ?
>
>
>
> Juan T. Llibre
> ASP.NET MVP
> http://asp.net.do/foros/
> Foros de ASP.NET en Español
> Ven, y hablemos de ASP.NET...
> ======================
>
> "A P" <a*@textguru.ph> wrote in message
> news:umsuqlnOFHA.3296@TK2MSFTNGP15.phx.gbl...
> > Hi!
> >
> > I have created a sample datagrid that can update data on a database.
> > Please
> > help me solve the problem, I have attached both aspx and code behind
> > (aspx.vb):
> >
>
> ...code snipped.
>
>
Author
6 Apr 2005 10:46 AM
Cor Ligthert
AP,

This is a lot of code, first of all would I change what happen in the load
event in something like this (typed in this message so watch typos).


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
       'Put user code to initialize the page here
If Not IsPostBack then
        OleDbDataAdapter1.Fill(DataSet21)
        session.item("ds21") = DataSet21
Else
       Dataset21 = directcast(session.Item("ds21"), dataset)
End if
DataGrid1.DataSource = Dataset21
DataGrid1.DataBind()
End Sub

And than see what happens.

Cor
Author
7 Apr 2005 1:05 AM
A P
Cor,

Same output. No change on the field. Much better, if its OK with you to post
a simple code that uses Datagrid on Access Database that can update values.
Hope that you'll grant my request.

regards,
Me

Show quoteHide quote
"Cor Ligthert" <notmyfirstn***@planet.nl> wrote in message
news:u9#rwXpOFHA.1732@TK2MSFTNGP14.phx.gbl...
> AP,
>
> This is a lot of code, first of all would I change what happen in the load
> event in something like this (typed in this message so watch typos).
>
>
> Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
>        'Put user code to initialize the page here
> If Not IsPostBack then
>         OleDbDataAdapter1.Fill(DataSet21)
>         session.item("ds21") = DataSet21
> Else
>        Dataset21 = directcast(session.Item("ds21"), dataset)
> End if
> DataGrid1.DataSource = Dataset21
> DataGrid1.DataBind()
> End Sub
>
> And than see what happens.
>
> Cor
>
>
Author
7 Apr 2005 6:27 PM
Cor Ligthert
AP,

> Same output. No change on the field. Much better, if its OK with you to
> post
> a simple code that uses Datagrid on Access Database that can update
> values.
> Hope that you'll grant my request.
>

At your service, I never use the designer so it was more work than I thought

\\\
'This is a simple project without any error trapping
'Create a new project
'Select an oledbdataadapter
'Use a Northwind MDB
'Select Employees and from that EmployeeID, FirstName, LastName
'Generate a dataset
'Drag a datagrid and set in the propertybuilder the datasource, datamember
'set the  Edit, Cancel, Update column,  datacolumns in the sequence Id,
FirstName, Lastname

'And than this code
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As _
    System.EventArgs) Handles MyBase.Load
        If Not IsPostBack Then
            OleDbDataAdapter1.Fill(DataSet11)
            Session.Item("ds21") = DataSet11
            DataGrid1.DataBind()
        Else
            DataSet11 = DirectCast(Session.Item("ds21"), DataSet1)
        End If
        DataGrid1.DataSource = DataSet11
    End Sub
    Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As _
   System.Web.UI.WebControls.DataGridCommandEventArgs) Handles _
           DataGrid1.EditCommand
        DataGrid1.EditItemIndex() = e.Item.ItemIndex
        DataGrid1.DataBind()
    End Sub
    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As _
        System.Web.UI.WebControls.DataGridCommandEventArgs) Handles _
        DataGrid1.UpdateCommand
        Dim dv As New DataView(DataSet11.Employees)
        dv.RowFilter = "EmployeeID = '" _
        & DirectCast(e.Item.Cells(1).Controls(0), TextBox).Text & "'"
        dv(0)("FirstName") = DirectCast(e.Item.Cells(2).Controls(0),
TextBox).Text
        dv(0)("LastName") = DirectCast(e.Item.Cells(3).Controls(0),
TextBox).Text
        OleDbDataAdapter1.Update(DataSet11.Employees)
        Session.Item("ds21") = DataSet11
        DataGrid1.DataBind()
    End Sub
    Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As _
    System.Web.UI.WebControls.DataGridCommandEventArgs) Handles _
        DataGrid1.CancelCommand
        DataGrid1.EditItemIndex = -1
        DataGrid1.DataBind()
    End Sub
End Class
///
Author
8 Apr 2005 4:11 AM
A P
Thanks Cor! I already made it but I need to study first the code since I
have no idea on the "Session.Item" thing and "DirectCast". Thanks again.


Show quoteHide quote
"Cor Ligthert" <notmyfirstn***@planet.nl> wrote in message
news:OU4LG#5OFHA.3072@TK2MSFTNGP09.phx.gbl...
> AP,
>
> > Same output. No change on the field. Much better, if its OK with you to
> > post
> > a simple code that uses Datagrid on Access Database that can update
> > values.
> > Hope that you'll grant my request.
> >
>
> At your service, I never use the designer so it was more work than I
thought
>
> \\\
> 'This is a simple project without any error trapping
> 'Create a new project
> 'Select an oledbdataadapter
> 'Use a Northwind MDB
> 'Select Employees and from that EmployeeID, FirstName, LastName
> 'Generate a dataset
> 'Drag a datagrid and set in the propertybuilder the datasource, datamember
> 'set the  Edit, Cancel, Update column,  datacolumns in the sequence Id,
> FirstName, Lastname
>
> 'And than this code
>     Private Sub Page_Load(ByVal sender As System.Object, ByVal e As _
>     System.EventArgs) Handles MyBase.Load
>         If Not IsPostBack Then
>             OleDbDataAdapter1.Fill(DataSet11)
>             Session.Item("ds21") = DataSet11
>             DataGrid1.DataBind()
>         Else
>             DataSet11 = DirectCast(Session.Item("ds21"), DataSet1)
>         End If
>         DataGrid1.DataSource = DataSet11
>     End Sub
>     Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As _
>    System.Web.UI.WebControls.DataGridCommandEventArgs) Handles _
>            DataGrid1.EditCommand
>         DataGrid1.EditItemIndex() = e.Item.ItemIndex
>         DataGrid1.DataBind()
>     End Sub
>     Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As
_
>         System.Web.UI.WebControls.DataGridCommandEventArgs) Handles _
>         DataGrid1.UpdateCommand
>         Dim dv As New DataView(DataSet11.Employees)
>         dv.RowFilter = "EmployeeID = '" _
>         & DirectCast(e.Item.Cells(1).Controls(0), TextBox).Text & "'"
>         dv(0)("FirstName") = DirectCast(e.Item.Cells(2).Controls(0),
> TextBox).Text
>         dv(0)("LastName") = DirectCast(e.Item.Cells(3).Controls(0),
> TextBox).Text
>         OleDbDataAdapter1.Update(DataSet11.Employees)
>         Session.Item("ds21") = DataSet11
>         DataGrid1.DataBind()
>     End Sub
>     Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As
_
>     System.Web.UI.WebControls.DataGridCommandEventArgs) Handles _
>         DataGrid1.CancelCommand
>         DataGrid1.EditItemIndex = -1
>         DataGrid1.DataBind()
>     End Sub
> End Class
> ///
>
>