24. februar 2004 - 09:01Der er
16 kommentarer og 1 løsning
Udtræk fra database i datagrid med edit/update
Jeg læser til multimediedesign på sidste semester hvor jeg har valgt at kigge på asp.net som selvstudie. Jeg har i næsten en uge siddet og bøvlet med at lave et udtræk fra en mysql database, der bliver hentet ind i et datagrid med mulighed for edit/update.
Derfor vil jeg blive meget glad hvis en her kunne lave et funktionelt eksempel til mig, helst som codebehind.
Ja hvad er problemet det kan jeg faktisk ikek rigtig svare dig på. Jeg kan godt få den til at lave input-felter ved klik på "edit" og omvendt ved "cancel". Men når jeg klikker på "Update" sker der ikke noget, selvom jeg har fulgt en vejledning fra msdn.
Vil meget gerne have et komplet eksempel istedet for en masse henvisninger, da jeg ikke har lavet andet end at kigge på sådanne den sidste uges tid.
OK - det er tæt på at være et komplet eksempel, der ligger på kursusmaterialer.dk, men du kan godt få et fuldt eksempel, der virker (bruger en access database, som du kan hente på kursusmaterialer.dk). Start med at lave en web-form med et datagrid og hvis du kalder det dgridAndeby skulle koden virke umiddelbart: Kan du få det til at virke burde det være en overkommelig opgave at få det til at virke med en mySQL database.
Imports System.Data Imports System.Data.OleDb
Public Class _8_database Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer. <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
End Sub Protected WithEvents dgridAndeby As System.Web.UI.WebControls.DataGrid
'NOTE: The following placeholder declaration is required by the Web Form Designer. 'Do not delete or move it. Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub
#End Region Dim objAdapter As OleDbDataAdapter
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim strConnection As String Dim strSQL As String Dim objConnection As OledbConnection strConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("Andeby.mdb") objConnection = New OledbConnection(strConnection) strSQL = "SELECT * FROM Person" objAdapter = New OleDbDataAdapter(strSQL, objConnection)
If Not IsPostBack Then DoDatabind() End If End Sub
Private Sub dgridAndeby_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgridAndeby.CancelCommand dgridAndeby.EditItemIndex = -1 DoDatabind() End Sub
Private Sub dgridAndeby_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgridAndeby.EditCommand dgridAndeby.EditItemIndex = e.Item.ItemIndex DoDatabind() End Sub
Private Sub dgridAndeby_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dgridAndeby.UpdateCommand Dim objRows() As DataRow Dim dsetAndeby As New DataSet Dim strSelect As String strSelect = "ID='" + CStr(dgridAndeby.DataKeys(e.Item.ItemIndex)) + "'" dsetAndeby = GetDataset() objRows = dsetAndeby.Tables(0).Select(strSelect) objRows(0).Item("Fornavn") = CType(e.Item.Cells(2).Controls(0), TextBox).Text
' Opdater database Dim ObjBuilder As OleDbCommandBuilder = New OleDbCommandBuilder(objAdapter) objAdapter.UpdateCommand = ObjBuilder.GetUpdateCommand() objAdapter.InsertCommand = ObjBuilder.GetInsertCommand() objAdapter.DeleteCommand = ObjBuilder.GetDeleteCommand() objAdapter.Update(dsetAndeby, "Andeby") dgridAndeby.EditItemIndex = -1 DoDatabind() End Sub
Private Function GetDataset() As DataSet Dim dsetAndeby As New DataSet objAdapter.Fill(dsetAndeby, "Andeby") Return dsetAndeby End Function
Private Sub DoDatabind() Dim objDataView As DataView ' strSortOrder = ViewState("SortOrder") objDataView = GetDataset().Tables(0).DefaultView ' objDataView.Sort = strSortOrder dgridAndeby.DataSource = objDataView dgridAndeby.DataBind() End Sub
Jeg har fundet tonsvis af kode lige som dit hvor de bruger et microsoft produkt (access database), og det er ikke bare sådan ligetil at lave det brugbart til en mysqldatabase - jeg har i hvertfald ikek kunne få det til at virke, det er jo det der er mit problem.
Tja... Min tanke var, at man kunne bruge et eksempel, der virkede mod en anden database og efterfølgende skifte til odbc connection i stedet. Skifter selv på samme måde mellem Access og SQL, men det er jo dit eget valg.
Hvis du opretter en tom fil ved navn DB.udl (efternavnet er det vigtige) kan du ved at klikke på den og starte på "Provider" fanen, vælge din MySQL forbindelse og konfigurere den.
Efter du har afprøvet forbindelsen vha. knappen på "Connection/forbindelse" fanen, åbner du filen i notepad, og vupti: her er din connection string.
Så skal du "bare" vælge dine DB objekter (Connection, ....) fra system.data.odbc objekterne.
Jeg er på vej til selv at finde ud af det, så lukker nu!
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.