|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
In-place Updating in Datagrid not workingI 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> <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 ___________________ 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 ....code snipped.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): > 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. > > 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 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 > > AP,
> Same output. No change on the field. Much better, if its OK with you to At your service, I never use the designer so it was more work than I thought> post > a simple code that uses Datagrid on Access Database that can update > values. > Hope that you'll grant my request. > \\\ '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 /// 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 > /// > > |
|||||||||||||||||||||||