Hej, Ser inte direkt vad som skulle vara fel men exakt vad är det som inte händer? Hej och tack för svar. Testa att använda dindatagrid.CurrentRowIndex för att få tag i radnumret. Hej, jag har testat just det du föreslår. Men det som händer om jag kör (i en MouseDown-händelse)(har testat andra händelser också, te x Click) Låter skumt. Hej, Här kommer mitt exempel, skillnaden är väl att jag använder mig av MS SQL Server iställer för Access. Fungerar det inte så kanske det beror på det, kan inte access så bra så jag vet inte om det är någon skillnad. Hej! Hej igen, vet inte hur det är i vb.net men i C# måste du sätta @ före en sökväg tex. @"c:\minsida\minabilder\minbild.jpg" eller skriva "c:\\minsida\\minabilder\\minbild.jpg" Du, Kul att det fungerade till slut! =) Tack för koden!radnummer i datagrid?
vet inte om jag ska tolka utebliven respons som att problemet är svårt eller ointressant. Jag söker i Helpen, och tycker mig finna relevant info, som t ex följande:
Sub MyDataGrid_Select(sender As Object, e As EventArgs)
Label1.Text = "You selected " & MyDataGrid.SelectedItem.Cells(1).Text & _
".<br>" & MyDataGrid.SelectedItem.Cells(1).Text & " has an index number of " & _
MyDataGrid.SelectedIndex.ToString() & "."
End Sub 'MyDataGrid_Select
Problemet är bara att varken SelectedIndex eller SelectedItem är "members" av 'System.Windows.Forms.DataGrid'
Jag visar alltså ett dataset från en access-datafil i en datagrid. Jag vill klicka i griden och få värdet i kolumnen längst till vänster (med rubriken "nr"), för att sedan visa en bild hörande till aktuell post. Jag försöker med följande kod:
varNumber = objDS.Tables("sciphi").Rows(DataGrid1.CurrentCell.RowNumber).Item("nr")
varRecord = varNumber & ".jpg"
PictureBox1.Image = Image.FromFile("c:/stampbase/images/varRecord")
men det går ju inte. Vet någon hur man ska göra.
hälsningar
MagnusSv: radnummer i datagrid?
Får du inte ut ett nummer i "varNumber" eller är det pictureboxen som inte vill ladda in bilden?Sv:radnummer i datagrid?
Det som händer är att varNumber får värdet 0 var jag än klickar i Griden. PictureBoxen har inga problem att läsa in bild om jag skriver dit en explicit fil i koden.
Jag har också testat att försöka få upp datan i en DataView-kontroll, men jag lyckas inte "populate" den, så det syns inget i den. Är det månne en framkomlig väg?
Det tröttsamma är att jag för nåot år sedan höll på med detta i VB 6.0, och då försökte använda FlexGrid för samma sak. Det visade sig då att ingen riktigt visste hur man använder den, och de som visste något, avrådde från den. Nu när jag försöker med samma projekt i vb.NET, får jag som första råd att inte använda DataGrid. Är det någon som har ett tips på vad jag BÖR använda, om jag vill göra mitt interface i vb.NET?
Idén är alltså att få upp en accesstabell som ska vara klickbar, så att varje post kan illustreras av en bild. Jag vill göra det i vb.NET för att inte användaren ska behöva Access eller annat program.
tacksam för svar,
MagnusSv: radnummer i datagrid?
Detta fungerar om du klickar längst ut till vänster på datagriden.
Du kan kanske kombinera detta med följande för att markera en hel rad:
http://www.pellesoft.se/communicate/tips/tips.aspx?tid=1703
som jag hittade här på Tips / Trix sidan.Sv:radnummer i datagrid?
varRecord= minDataGrid.CurrentRowIndex
är att varRecord får värdet 0 så fort jag klickar någonstans i Griden, och sedan behåller det.
Det gillar man ju inte.
MagnusSv: radnummer i datagrid?
Jag testade med att lägga det i click() händelsen och då fungerade det.
Kanske en dum fråga men du har väl data i griden eller?Sv:radnummer i datagrid?
jag har data i griden såtillvida att jag SER data, kan söka med sql-frågor och få upp träffar, och jag får antalet träffar med
Label1.Text = objDS.Tables("sciphi").Rows.Count & " records"
men eftersom jag inte har någon överblick över .net-världen är jag osäker på om jag råkat hoppa över något. Jag letar kanske i DataSet och inte i själva DataGrid, som väl ungefär är "interfacet" för DataSet?
Skulle du vilja maila mig den kompletta koden för din lyckade click-händelse (dvs hela form-koden, inklusive alla deklarationer och subrutiner) till
magnus.waller@comhem.se
så får jag försöka jämföra och se om jag får det att funka hos mig. Skulle vara bussigt!
hälsar
MagnusSv: radnummer i datagrid?
Har ett formulär med en sökknapp och sedan presenteras resultatet i en datagrid.
'Private variables
Private myConnection As New SqlConnection("Initial Catalog=NorthwindStudents;Data source=lusql01;Integrated Security=true;User id=myUser;password=myPass;")
Private myAdapter As New SqlDataAdapter
Private myDataset As New DataSet
'Såhär ser själva sökningen ut...
Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
Dim sqlStr As String = "Select * from Customers"
Try
'Clear the dataset from previous results
myDataset.Clear()
myConnection.Open()
myAdapter.SelectCommand = New SqlCommand
myAdapter.SelectCommand.Connection = myConnection
myAdapter.SelectCommand.CommandText = sqlStr
myAdapter.SelectCommand.CommandType = CommandType.Text
myAdapter.SelectCommand.ExecuteNonQuery()
myAdapter.Fill(myDataset, "Customers")
If myDataset.Tables(0).Rows.Count > 0 Then
dgResults.DataSource = myDataset
dgResults.DataMember = "Customers"
Else
MessageBox.Show("Hittade inga poster med angivet sökkriterium", "Ingen träff", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
myConnection.Close()
Catch ex As Exception
myConnection.Close()
MsgBox("Fel i btnSearch_Click: " + ex.Message + " : " + ex.TargetSite.Name)
End Try
End Sub
'Här kommer det jag testade för att få radnumret
Private Sub dgResults_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles dgResults.Click
MsgBox(dgResults.CurrentRowIndex.ToString)
End Sub
Hopps det hjälper
Sv:radnummer i datagrid?
Du, det funkar ju fint med din kod! Jag blev så exalterad att jag inte närmare studerat varför, men jag ska titta mer på det sedan. Nästa problem dyker nu upp. Jag får felmeddelande för rad 3 i denna kod:
numRecord = DataGrid1.CurrentRowIndex.ToString
varRecord = numRecord & ".jpg"
PictureBox1.Image = Image.FromFile("c:/stampbase/images/") & varRecord
Jag får upp bilden om jag skriver in en specifik bild direkt i koden, typ
PictureBox1.Image = Image.FromFile("c:/stampbase/images/1.jpg")
Jag är hur som helst mycket glad för att det börjat funka med radnumren! Vet du något om hur man läser in en variabel i söksträngen för Imageboxen, så berätta gärna!!!
hälsar
Magnuskom på det
PictureBox1.Image = Image.FromFile("c:/stampbase/images/" & varRecord)
visade sig vara rät syntax. Nu känns det plötsligt jättebra. Tack för din hjälp. Nu återstår att döpa och storleksändra 3923 bilder. Piece of cake.
När det är gjort, kommer jag (nog) att stöta på problem med:
1. Uppdatera datafilen (har lite dokumentation om sådant som ska kollas, men tar det senare)
2. Göra en exe-fil av programmet, helst så att databasfilen och image-katalogen installeras rätt på mottagarens dator.
Till dess: tack.
MagnusSv: radnummer i datagrid?
Två småsaker till
två detaljer:
1. Kan man ställa in kolumnbredden i Griden "manuellt" innan den laddas upp på formuläret?
2. Hur gör man för att det ska vara tomt istället för stå "null" i en cell om värde saknas?
vet du, tipsa gärna!
MagnusSv: Två småsaker till
Vad gäller utsmyckningen av datagriden så har jag använt mig av följande kod i projektet ovan:
'Create and design the datagridview
Dim objDataGridTablesStyle As New DataGridTableStyle
Dim objTextCol As New DataGridTextBoxColumn
'Change color of the datagridbackground
objDataGridTablesStyle.AlternatingBackColor = Color.WhiteSmoke
objDataGridTablesStyle.MappingName = "Customers"
'Change the columnnames in the datagrid.
objTextCol.MappingName = "CustomerId"
objTextCol.HeaderText = "Id"
objTextCol.Width = 50
'Add the column to the datagridtablestyle
objDataGridTablesStyle.GridColumnStyles.Add(objTextCol)
'Get new reference and do the same for the other columns
objTextCol = New DataGridTextBoxColumn
objTextCol.MappingName = "CompanyName"
objTextCol.HeaderText = "Namn"
objTextCol.Width = 130
objDataGridTablesStyle.GridColumnStyles.Add(objTextCol)
objTextCol = New DataGridTextBoxColumn
objTextCol.MappingName = "City"
objTextCol.HeaderText = "Stad"
objDataGridTablesStyle.GridColumnStyles.Add(objTextCol)
objTextCol = New DataGridTextBoxColumn
objTextCol.MappingName = "Country"
objTextCol.HeaderText = "Land"
objDataGridTablesStyle.GridColumnStyles.Add(objTextCol)
'Add the tablestyle to the datagrid
dgResults.TableStyles.Add(objDataGridTablesStyle)
Lycka till!
Sv:Två småsaker till
Jag är rätt nergrävd i rutinpyssel med inmatning av poster i databasen en månad framöver (hehe), men kommer att ha nytta av den (design-koden) och tipset om if-satsen för nullvärden.
Magnus :)