17. marts 2004 - 13:00Der er
16 kommentarer og 1 løsning
Itemtemplate med hyperlink, parameteroverførsel
Hejsa
Jeg fandt følgende kode på nettet, som jeg vil bruge i min app. problemet er at jeg ikke kan gennemskue hvordan jeg bruger den parameter(mssql_id) som jeg sender til details.aspx til at fylde en datalist med alt fra den tabel hvor parameteren er primærnøgle. Det hele funker på den side hvor jeg bruger klassen. Dataene ligger i en mssql db. Jeg havde forestillet mig en sqldataadapter("SELECT * FROM tabel WHERE mssql_id = "og så parameteren)
klassen: Class myHyperlinkcolumn Implements ITemplate
Sub Instantiatein(ByVal container As Control) Implements ITemplate.InstantiateIn Dim hlink As HyperLink = New HyperLink AddHandler hlink.DataBinding, AddressOf BindHyperLinkColumn container.Controls.Add(hlink) End Sub
Public Sub BindHyperLinkColumn(ByVal sender As Object, ByVal e As EventArgs) Dim hlink As HyperLink = CType(sender, HyperLink) Dim container As DataGridItem = CType(hlink.NamingContainer, DataGridItem) Dim strVals As String strVals = "id=" & Convert.ToString(DataBinder.Eval( _ (CType(container, DataGridItem)).DataItem, "MS_SQL_ID")) hlink.NavigateUrl = "details.aspx?" & strVals hlink.Text = "Show details"
End Sub End Class>
kaldt fra: Dim tempclm As New TemplateColumn tempclm.ItemTemplate = New myHyperlinkcolumn DataGrid1.Columns.Add(tempclm) DataGrid1.DataSource = ds.Tables(0) DataGrid1.DataBind()
Hej igen Jakobg. På den side som du hjalp mig med i går, er der et datagrid som vi jo fik fyldt noget farve på. Det virker fint. Men en af kolonnerne i det datagrid er sådan en templateComlumn, som ved hjælp af klassen myHyperlinkcolumn genererer et link (se koden ovenover) til details.aspx. Som du så i går, har jeg 4 attributter i mit datagrid, plus den kolonne med linket. planen er at linket skal fylde en datalist med alle data fra ms_sql tabellen som man kan redigere i. Når du spørger helt konkret hvad det er jeg vil lave, tror jeg at det mest præcise svar er "Jeg vil have adgang til værdien af strVals i details.aspx.vb. for som jeg ser det, skal jeg lave en dataadapter som den jeg beskrev ovenfor.
Den tilføjer du bare i dit datagrid sammen med de andre columns. Bemærk, at {0} bliver erstattet med den værdi du trækker ud (angivet i DataNavigateUrlField).
Men jeg er ret sikker på, at det ikke er den bedste løsning i dit tilfælde, formentlig er det en buttoncolumn du skal bruge i stedet: Med en hyperlinkcolumn kalder du en helt ny side, mens du bare kan nøjes med at poste til den samme side igen.
Jeg har linkcolumn på plads (se myHyperlink klassen i koden øverst) når jeg klikker på linket redirecter den til details.aspx?id='værdien fra pågældende row i datagrid' Jeg vil lige overveje buttoncolumn
Du skal kun bruge en buttoncolumn, hvis det er den samme side, som viser details. Ellers er en linkcolumn eller hyperlinkcolumn dét du er ude efter. Eller også skulle du bare lave et fladt link i en templatecolumn?
Jeg tror jeg holder mig til det jeg har lavet nu. Jeg skal bare have de sidste detaljer på plads så tror jeg den er der. Men du kan lige poste et svar så får du points.
det kan godt være at det er et lidt dumt spørgsmål, men det jeg er i tvivl om er; når jeg bruger webform1.aspx?ID={0}så sender jeg jo id'et på den 0'te plads med over til den side jeg redirecter til.. feks fra webform1.aspx til details.aspx Så kommer id med i URL'en feks details.aspx?id=56 Eller har jeg totalt misforstået ideen? og hvordan får jeg mulighed for at bruge værdien 56 i details.aspx? Jeg vil jo gerne åbne alle kolonner fra den post der har id 56 i details.aspx i en datalist eller et grid så jeg har mulighed for at redigere dem.
Du fanger ID'et igen på details.aspx med Request.QueryString:
dim ID as integer = Request.QueryString("ID")
Men er det data'ene du viser i det første datagrid, som du vil redigere i? For hvis det er dét, kan du altså lave nogen ret smarte ting med et datagrid, hvor du aktiverer en række i datagrid'et, og derefter kan redigere i alle felterne...
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.