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? Det verkar som du i din EditItemTemplate har skrivit ett kolumnnamn som inte existerar i din datakälla, den enda kolumnen du har i select frågan som liknar den är ju "prisNr". Datagrid relation
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
<code>
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
</code>
ps.plockat bort delete, add och avbryt functionen ansåg inte det vara viktigt i detta sammanhang =)Sv: Datagrid relation
Titta över din edit template.