Archief - ASP.NET: waarde uit datagrid halen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

borracho

Legacy Member
ok heb dus al volgende code waarmee ik de account naam van een user ophaal en deze dan laat filteren in een datagrid.
Werkt goed behalve dat ik nu de waarde uit kolom 2 en 3 moet hebben om andere datagrids te filteren.

Sub page_load(Sender As Object, E As EventArgs)
Dim oConn as oledbconnection
Dim oCmd As OleDbCommand
Dim sSQL As String
Dim objDataReader as OleDbDataReader

Dim arrSomething, strXPUser
arrSomething = split(Request.ServerVariables("LOGON_USER"),"\")
strXPUser = arrSomething(1)
response.Write(strXPUser)

oConn = new oledbconnection("Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\Inetpub\wwwroot\Obis2\DB\Inbev.mdb")
oConn.open()

sSQL = "SELECT * FROM tblpersoneel WHERE [Personeelslidinlognaam] ='" & strXPUser & "'"
oCmd = New OleDbCommand(sSQL, oConn)

objDataReader = oCmd.ExecuteReader(CommandBehavior.CloseConnection)

dgResults.DataSource = objDataReader
dgResults.DataBind()

objDataReader.Close()
end sub

Alvast bedankt

Borracho

Boddah

Legacy Member
dat doe je met de functie FindControl
het beste is dat je elke kolom opmaakt met een itemtemplate.
dat ziet er als volgt uit:

<asp:datagrid ...>
<columns>
<asp:templatecolumn>
<itemtemplate>
<asp:Label ...>
</asp:Label>
</itemtemplate>
</asp:templatecolumn>
</columns>
</asp:datagrid>

items eruit halen doe je zo (wel c#, maar principe is hetzelfde):

foreach(DataGridItem item in datagrid1.Items)
{
string temp = ((Label)item.FindControl("lblMijnLabel")).Text
}

de waarde in FindControl is de id die je hebt gegeven aan je label (of hyperlink of wat dan ook) in je datagrid.

borracho

Legacy Member
heb je code proberen om te zetten en te gebruiken in VB maar hij blijft fouten geven. (compilation error op die find control line in die code)

Heb ondertussen die itemtemplate al opgenomen.

<asp: DataGrid id="dgResults" runat="server" ShowFooter="false" ShowHeader="true" AutoGenerateColumns="true" >

<columns>

<asp:TemplateColumn>
<itemtemplate>
<asp:Label ID="label1" Text='<%# DataBinder.EvalContainer.DataItem, "Taalid") %>'>


</itemtemplate>

</asp:TemplateColumn>
</columns>
</asp: DataGrid>


als code heb ik ondertussen verschillende varianten van deze geprobeerd

Dim dgi as DataGridItem
For Each dgi in dgResults.Items
Dim strx as String = CType(dgi.item.FindControl("label1"), Label).Text
Next

Boddah

Legacy Member
welke fout geeft het juist? misschien iets met het parsen van de control naar een label?
misschien kun je voor het parsen van de control iets anders gebruiken dan CType?

mja, ik heb eens rondgegoogled en de code die ik tegenkom is nochtans vergelijkbaar met de jouwe.

het enige wat ik nu zie, is dat dgi.item --> dgi.Item moet zijn :)

edit:
nog een stukje code gevonden dat je mss kan helpen:

CType(dgi.Item.FindControl("label1"), TextBox).Text 'label1.Text

ik ken niet veel vb, dus ik zie er de logica niet van in, maar het zou wel eens kunnen werken :)

borracho

Legacy Member
Die hoofdletter was het dus niet:)

Compiler Error Message: BC30456: 'Item' is not a member of 'System.Web.UI.WebControls.DataGridItem'.

op deze lijn
Line 61: Dim strx as String = CType(dgi.Item.FindControl("label1"), Label).Text

borracho

Legacy Member
inderdaad ondertussen ook al geprobeerd maar wil gewoon nie werken, kbegrijp het ook niet meer ze:doh:

ale toch al bedankt voor uwen tijd da ge der in gestoken hebt

ondertussen via enkele andere forums nog enkele kleine wijzigingen in code gedaan: (en ook maar dienen headergenerator op false gezet)

Dim dgi as DataGridItem
For Each item as DataGridItem in dgResults.Items
dim strx as string = CType(dgi.FindControl("label1"), Label).Text
Next

maar dan geeft hem
Object reference not set to an instance of an object.


bij een mogelijke oplossing van iemand anders geeft hem dezelfde fout
Dim s As String = String.Empty

For Each item as DataGridItem in dgResults.Items
s &= DirectCast(item.FindControl("Label1"), Label).Text & " | "
Next

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request.

Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

[NullReferenceException: Object reference not set to an instance of an object.]
ASP.index_aspx.page_load(Object Sender, EventArgs E) in c:\inetpub\wwwroot\obis2\index.aspx:59
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +35
System.Web.UI.Page.ProcessRequestMain() +731

borracho

Legacy Member
heb het eindelijk gevonden, als iemand ge&#239;nteresseerd

dim strx as string
strx = oDS.Tables(0).Rows(0)("NameColumn").ToString()
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan