Har en property som jag når från contentpage Hej Ann, Jo, det stämmer att det är så jag menar. Om jag lägger in koden för att fylla griden i propertyn fungerar det.Nå värdet av property inuti Masterpage
Page_LoadComplete innehåller:
D="värdet som är unikt för sidan"
I masterpage har jag detta:
Public Property D() As String
Get
Return D
End Get
Set(ByVal D As String)
SQL_D = "Select example from example where example = " & D
End Set
End Property
I MasterPagen har jag även en Sub som fyller GridView och vill att den ska visa data från urval som är beroende på vilken sida som besöks och vill i koden nå SQL_D men lyckas inte.
VB om det inte är obvious :)
Tycker att det borde gå att göra men har börjat tveka då jag inte lyckats googla mig fram till hur det ska göras.
Tack på förhand,
//AnnSv: Nå värdet av property inuti Masterpage
Få se om jag har förstått dig rätt nu. Du har en Master och x antal content page där respektive sida har ett unikt ID? Du vill att besökaren skall få den gridview på Master att uppdateras med information beroende på vilka sidor som har besökts?
Nu jobbar vi ju alla olika men hoppas att du får något uppslag från följande:
1 connection class - cAccessConn (detta exemple med en Access Databas)
Public Class cAccesConn
Private AccessConn As New OleDb.OleDbConnection("Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & HttpContext.Current.Server.MapPath("./DB/YourDB.mdb") & "; Mode=ReadWrite;")
Private ads As New DataSet
Private ada As New OleDb.OleDbDataAdapter
Private aSqlStr As String
Protected ReadOnly Property Con() As OleDb.OleDbConnection
Get
Return AccessConn
End Get
End Property
Public ReadOnly Property ds() As DataSet
Get
Return ads
End Get
End Property
Public Property SqlStr() As String
Get
Return aSqlStr
End Get
Set(ByVal Value As String)
aSqlStr = Value
End Set
End Property
Public Sub Dispose()
AccessConn.Dispose()
ads.Dispose()
ada.Dispose()
End Sub
Public Sub Fill()
Dim Command As New OleDb.OleDbCommand
Command.CommandText = SqlStr
Command.Connection = AccessConn
ada.SelectCommand = Command
AccessConn.Open()
ada.Fill(ds)
AccessConn.Close()
End Sub
Protected Sub ExecNoQuery(ByVal sp As OleDb.OleDbCommand)
AccessConn.Open()
sp.ExecuteNonQuery()
AccessConn.Close()
End Sub
End Class
2 code class - kod och frågor mot databasen:
Public Class cYourClass
'ärver min koppling-klass
Inherits cAccesConn
Public Sub GetPageUniqueID(ByVal Id)
SqlStr = "SELECT * " & _
"FROM YourTables " & _
"WHERE Id = " & Id
Fill()
End Sub
End Class
Vidare så leker jag med tanken att jag har har en content page som innehåller diverse inforamtion (ej så viktigt i sammanhanget) men har sitt unika D värde tex D=1
På denna sida lägger jag även en button som gör någonting men bla passar information till Master sidan för att uppdatera Gridview med information.
3 content page - code behind
Partial Class YourPage
Inherits System.Web.UI.Page
Dim PageID = 1
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Something
End Sub
Protected Sub btnMyButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnMyButton.Click
'Deklarera för att komma åt din GridView på Matser sidan som har ID MyGridView
Dim GridView As GridView
GridView= CType(Master.FindControl("MyGridView"), GridView)
'Deklarerar ett objekt av klassen cYourClass och fyll GridView med info med id 1
Dim objMyObject As New cYourClass
objMyObject .GetPageUniqueID(PageID)
GridView.DataSource = objMyObject .ds
GridView.DataBind()
GridView.Dispose()
End Sub
End Class
Kanske bara krångla till det för dig men du kanske fick något uppslag. Observera att detta inte på något sätt är testat så det kan hända att jag missat något? Men som sagt så hoppas jag på att du kommer framåt.
Mvh,
Thomas
Sv:Nå värdet av property inuti Masterpage
Det är det fetmarkerade som inte fungerar, värdet hämtas inte från propertyn:
Nu har jag inte byggt en klass av det utan kör det i utvecklingssteg 1 direkt på masterpagen, även gridview, känns som mer optimalt att bara ha kod och design på den sidan.
Om jag skriver ett sql-uttryck utan att försöka hämta värdet så fungerar det, men då laddar den samma på alla sidor :(
Frågan är kanske bättre formulerad så här:
Hur hämtar jag värdet från en property på masterpage till en sub på masterpage?
Tack för svar! Ha det bra!
Public Sub Fill()
Dim Command As New OleDb.OleDbCommand
Command.CommandText = <b>SqlStr</b>
Command.Connection = AccessConn
ada.SelectCommand = Command
AccessConn.Open()
ada.Fill(ds)
AccessConn.Close()
End Sub
<b>Edit:</b> och det kanske är just det som inte går att göra? Komma åt värdet i en property på masterpage i en sub på masterpage? Sv: Nå värdet av property inuti Masterpage
Eftersom detta är autodidaktapproach tar jag gärna emot synpunkter på för- och nackdelar!
(Det är möjligt att jag efter laborerande så att det fungerar kommer på att hur jag ska strukturera det bättre - men man vet aldrig :)
Public Property D() As String
Get
Return D
End Get
Set(ByVal D As String)
SQL_D = "Select example from example where example = " & D
<kod för att fylla grid />
End Set
End Property