webForumDet fria alternativet

Datagrid relationsDb

0 svar · 185 visningar · startad av MizzK

MizzKMedlem sedan juni 2003410 inlägg
#1

Sitter och arbetar med DataGrid och editItemTemplte. Och har nu stött på ett problem, när jag i sql satsen hämtar data från två tabeller fungerar inte Edit/uppdatera funktionen. Kan man inte hämta och editera från två relaterade tabeller? eller vad?

När man lägger in pris i dg på en egen rad säger den:System.ArgumentException: pris is neither a DataColumn nor a DataRelation for table ingrediens

Imports System
Imports System.Web.UI
Imports System.Web.UI.Webcontrols
Imports System.Data
Imports System.Data.Oledb

    Public Class Ingrediens : Inherits Page

       Dim ingaktivSQL as String
       Dim inginaktivSQL as String
       Dim objConnection as OleDbConnection
       Dim strConnection as String
       Dim ds as DataSet
       Dim objAdapter as OleDbDataAdapter
       Dim objCommandBuilder As OleDbCommandBuilder
       Dim objCommand  As OleDbCommand

       Public dgingData as DataGrid
       Public dgdelingData as DataGrid
       Public txtBeskrivning as TextBox
       Public txtPris as TextBox

        Function GetstrConnection() As String
            'Skapar anslutning (anropar från web.config)
             'Return ConfigurationSettings.AppSettings("Connstr").Replace("%MAPPATH%", Server.MapPath(" "))
             return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Webb\Webbprojekt\dbpelican.mdb"
        End Function

        Function CreateDataSource() As DataTable

            'Kopplar upp mot databasen
              strConnection = getstrConnection()
              ingaktivSQL = "SELECT Ingrediens.beskrivning, Ingrediens.prisNr FROM Pris INNER JOIN Ingrediens ON Pris.prisNr = Ingrediens.prisNr WHERE Ingrediens.Visa=True;"

            'Ansluter till databastabellen
              objAdapter = new OleDbDataAdapter(ingaktivSQL, strConnection)

              objCommandBuilder = new OleDbCommandBuilder(objAdapter)

               'Fyller DataSet
               ds = new DataSet()
               objAdapter.Fill(ds, "ingrediens")

               return ds.Tables("ingrediens")

         End Function

         Sub Page_Load(sender As Object, e As EventArgs)

            ' Laddar den aktiva datan bara en gång
            If Not IsPostBack Then
                'Väljer datavy och binder till serverkontrollen
                dgIngData.DataSource = CreateDataSource()
                dgIngData.DataBind()

            End If

         End Sub

        Sub Edit(Sender As Object, E As DataGridCommandEventArgs)

        dgIngData.EditItemIndex = CInt(e.Item.ItemIndex)
        dgIngData.DataSource = CreateDataSource()
        dgIngData.DataBind()

        End Sub

      Sub Update(Sender As Object, E As DataGridCommandEventArgs)

        Dim table As DataTable = CreateDataSource()
        Dim row      As Integer = CInt(e.Item.ItemIndex)
        Dim EditText As TextBox

        EditText = E.Item.FindControl("txtBeskrivning")
        table.Rows(row).Item("beskrivning") = EditText.Text

        EditText = E.Item.FindControl("txtPris")
        table.Rows(row).Item("prisnr") = EditText.Text

        objAdapter.update(ds,"ingrediens")

        dgIngData.EditItemIndex = -1

        dgIngData.DataSource = CreateDataSource()
        dgIngData.DataBind()

     End Sub

     End Class

ps.plockat bort delete, add och avbryt functionen ansåg inte det vara viktigt i detta sammanhang =)

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)