Minulla on Formilla DataGridView johon ohjaan DataBindinNavigaattorilla.
DataGridVien alla on textboxeja, joihin olisi tarkoitus eritellä DataGridViewistä valitun rivin tiedot.
Miten pitäisi edetä? En keksi nyt miten saan ne linkitettyä.
Olisiko jollain ideoita?
Bindaat ne textboxit siihen bindingsourceen mihin se bindingnavigator on bindattu.
Moi jokke568!
tässä eräs tapa...
'väännetty SharpDevelop 4.2:lla Imports System Imports System.Data Imports System.Data.OleDb Public Partial Class MainForm Private da As OleDbDataAdapter = Nothing Private ds As DataSet = Nothing Private dt As DataTable = Nothing Private conn As OleDbConnection = Nothing Private connstr As String = String.Empty Private dgvFilled As Boolean Public Sub New() Me.InitializeComponent() End Sub Sub MainFormLoad(sender As Object, e As EventArgs) conn = New OleDbConnection Dim dbPath As String = Environment.GetFolderPath( _ Environment.SpecialFolder.MyDocuments) 'esim. dbPath += "\Tietokanata1.accdb" connstr = "Provider=Microsoft.ACE.OLEDB.12.0;" + _ "Data Source="+ dbPath + ";Persist Security Info=False;" Try conn.ConnectionString = connstr conn.Open Catch ex As Exception MsgBox(ex.Message) End Try If conn.State = ConnectionState.Open Then Dim query As String = "SELECT * FROM Taulu1" da = New OleDbDataAdapter(query, connstr) ds = New DataSet da.Fill(ds, "Taulu1") dt = ds.Tables("Taulu1") da = Nothing : ds = Nothing If dt.Rows.Count > 0 Then dataGridView1.DataSource = dt For i As Integer = 1 To dt.Columns.Count Dim txtfield As TextBox = New TextBox With txtfield Me.Controls.Add(txtfield) .Name = "txtfield" + CStr(i) .Width = dataGridView1.Columns(i - 1).Width .Top = dataGridView1.Top + dataGridView1.Height + 10 'esim. .Font = dataGridView1.Font Select Case i Case 1 .Left = dataGridView1.Left + dataGridView1.RowHeadersWidth Case Is > 1 .Left = Me.Controls("txtfield" + CStr(i - 1)).Left _ + Me.Controls("txtfield" + CStr(i - 1)).Width - 1 End Select End With Next End If End If End Sub Sub MainFormShown(sender As Object, e As EventArgs) dgvFilled = True End Sub Sub DataGridView1CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) If dgvFilled Then e.CellStyle.WrapMode = DataGridViewTriState.True '(*) For i As Integer = 0 To DataGridView1.Columns.Count - 1 Dim txtbox As TextBox = CType(Me.Controls("txtfield" & CStr(i + 1)),TextBox) With txtbox .Text = DataGridView1.CurrentRow.Cells.Item(i).Value.ToString If CType(e.CellStyle.WrapMode, Boolean) Then .Multiline = True .Height = DataGridView1.CurrentRow.Height Else .Multiline = False End If End With txtbox = Nothing Next End If End Sub Sub DataGridView1ColumnWidthChanged(sender As Object, e As DataGridViewColumnEventArgs) Me.Controls("txtfield" + CStr(e.Column.Index + 1)).Width = e.Column.Width For i As Integer = 1 To DataGridView1.Columns.Count With Me.Controls("txtfield" + CStr(i)) Select Case i Case 1 .Left = dataGridView1.Left + dataGridView1.RowHeadersWidth Case Is > 1 .Left = Me.Controls("txtfield" + CStr(i - 1)).Left _ + Me.Controls("txtfield" + CStr(i - 1)).Width - 1 End Select End With Next End Sub Sub MainFormFormClosing(sender As Object, e As FormClosingEventArgs) If conn.State = ConnectionState.Open Then conn.Close End If dt = Nothing conn = Nothing End Sub End Class
Kiitos
Aihe on jo aika vanha, joten et voi enää vastata siihen.