Avatar billede bongo20 Nybegynder
21. maj 2006 - 12:23 Der er 27 kommentarer og
1 løsning

Gridview datasource

Hej

Jeg har læst mig til at man med fordel kan bruge en SqlDataSource til at binde en GridView til sin db.
Når jeg så læser om SqlDataSource virker det som om jeg er nødt til at fortælle den min connection streng.
Altså skrive den i koden.
Kan det virkelig være rigtigt.
Kan jeg ikke give den en åben connection?

:-)
Avatar billede snepnet Nybegynder
21. maj 2006 - 12:28 #1
Du kan skrive den i din konfigurationsfil helt som du plejer, og der er endda direkte adgang til connectionstrings-sektionen.
Hvis du bruger VS2005 eller VWD kan du åbne din database i din server explorer, og så bare trække en tabel direkte ind på en form... Så kan du se hvilke muligheder der er.
F.eks. kan du se, at den henter en connectionstring fra din konfigurationsfil ud deklerativt vha. et <%$ expression (hvilket er en nyhed i 2.0).
Mvh
Avatar billede bongo20 Nybegynder
21. maj 2006 - 13:10 #2
Dvs. at min dll som returnerer en åben connection kan jeg ikke bruge ?
Avatar billede bongo20 Nybegynder
21. maj 2006 - 13:25 #3
Det virker ret smart med de muligheder det giver.
Den kode der kommer ud af det, er da ekstremt grim, ik?
Sql statements i html koden.
Det er jo næsten grimmere end klassisk asp...

Skal vi bare vænne os til det, eller finder de på noget andet?

:-)
Avatar billede snepnet Nybegynder
21. maj 2006 - 14:33 #4
Der er ingen der dikterer at du skal lægge din sql i aspx-filen... Du kan også henvise til nogle stored procedures, eller endnu bedre. Bygge dig nogle klasser der kan give dig det data du skal bruge, og så anvende en objectdatasource og angive på den hvilke metoder der skal anvendes til select/insert/update/delete... Det giver en rimelig ok adskildelse.
Mvh
Avatar billede bongo20 Nybegynder
25. maj 2006 - 19:05 #5
Det lyder fornuftigt det der snepnet.

Jeg har dog et andet problem med min gridview.
Når jeg opdaterer en række imens jeg kører localhost (VS2005) virker det fint, men når jeg smider det på serveren opdaterer den ingenting.

Har du prøvet noget i den retning ?
Avatar billede snepnet Nybegynder
26. maj 2006 - 11:38 #6
Hej Bongo :o)

Hvad er det for en database du bruger?
Og
Får du ikke nogen fejl når du kører det på serveren?

Mvh
Avatar billede snepnet Nybegynder
26. maj 2006 - 11:38 #7
(du må gerne sende lidt kode med, så jeg kan se hvad der foregår :o)
Mvh
Avatar billede bongo20 Nybegynder
26. maj 2006 - 22:11 #8
Det er en SqlServer 2000.
Nej ikke det der ligner en fejl, den reagerer ligesom hvis man havde glemt sin !IsPostBack, men det virker fint localhost, på den samme SqlServer...

Her er koden til gridview:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
                                AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="SqlDataSource1"
                                EmptyDataText="There are no data records to display." BackColor="#FFFFFF" HeaderStyle-BackColor="#537AB1" Width="100%">
                                <Columns>
                                    <asp:CommandField ShowDeleteButton="False" ControlStyle-ForeColor="black" ItemStyle-CssClass="GridViewCell" HeaderStyle-ForeColor="#FFFFFF" HeaderText="Edit/delete" ShowEditButton="True" />
                                    <asp:HyperLinkField DataNavigateUrlFormatString="~/Events.aspx?ID={0}" DataNavigateUrlFields="ID" DataTextField="Name" ItemStyle-CssClass="GridViewCell" ControlStyle-CssClass="aBlack" HeaderStyle-CssClass="GridViewHead" HeaderText="EventName" SortExpression="EventName" />
                                    <asp:BoundField DataField="EventLocation" ItemStyle-CssClass="GridViewCell" HeaderText="EventLocation" SortExpression="EventLocation" >
                                        <HeaderStyle CssClass="GridViewHead" />
                                    </asp:BoundField>
                                    <asp:BoundField DataField="EventDate" ReadOnly="true" ItemStyle-CssClass="GridViewCell" HeaderText="EventDate" SortExpression="EventDate" />
                                    <asp:BoundField DataField="EventTime" ItemStyle-CssClass="GridViewCell" HeaderText="EventTime" SortExpression="EventTime" />
                                    <asp:CheckBoxField DataField="EventActivated" ItemStyle-CssClass="GridViewCell" HeaderText="EventActivated" SortExpression="EventActivated" />
                                </Columns>
                                <AlternatingRowStyle BackColor="#F1F5F8" />
                            </asp:GridView>
                            <asp:SqlDataSource ID="SqlDataSource1" runat="server"
                                ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>"                               
                                SelectCommand="SELECT [ID], convert(varchar,EventDate,107) As EventDate, [EventTime], [EventLocation], [EventName], [EventDescription], [EventPicURL], [EventActivated], [CreatedDate] FROM [tbl_Event]"
                                UpdateCommand="UPDATE [tbl_Event] SET [EventTime] = @EventTime, [EventLocation] = @EventLocation, [EventActivated] = @EventActivated WHERE [EventID] = @original_EventID">                               
                                <UpdateParameters>                                   
                                    <asp:Parameter Name="EventTime" Type="String" />
                                    <asp:Parameter Name="EventLocation" Type="String" />                                                                                                           
                                    <asp:Parameter Name="EventActivated" Type="Boolean" />                                   
                                    <asp:Parameter Name="original_EventID" Type="Int32" />
                                </UpdateParameters>                               
                            </asp:SqlDataSource>
Avatar billede snepnet Nybegynder
27. maj 2006 - 11:39 #9
Virker det på localhost (altså på IIS'en - eller med den i vs2005 indbyggede webserver?
Mvh
Avatar billede bongo20 Nybegynder
27. maj 2006 - 20:10 #10
det virker med den indbyggede i vs2005
Avatar billede snepnet Nybegynder
27. maj 2006 - 20:26 #11
ok ... prøv at lav et virtual directory på localhost, og se hvordan det går hvis du eksekverer igennem dem.
Mvh
Avatar billede snepnet Nybegynder
27. maj 2006 - 20:27 #12
Kan du evt. vise din connectionstring (strippet for host/brugernavn/adgangskode).
Mvh
Avatar billede bongo20 Nybegynder
27. maj 2006 - 20:49 #13
Data Source=MSSql host;Initial Catalog=database navn;Persist Security Info=True;User ID=noget andet;Password=noget andet;" providerName="System.Data.SqlClient"
Avatar billede bongo20 Nybegynder
27. maj 2006 - 21:21 #14
det virker glimrende fra min egen iis her,. den opdaterer som den skal...

En eller anden server setting? security ting ?
Avatar billede snepnet Nybegynder
28. maj 2006 - 15:32 #15
Ja - det skal man jo ikke afvise. Jeg har ikke rigtig noget bud på hvad det kan være... Prøv at fjern persist security info=true
Mvh
Avatar billede bongo20 Nybegynder
28. maj 2006 - 17:08 #16
Det hjalp desværre ikke noget,..:-(
Avatar billede snepnet Nybegynder
28. maj 2006 - 17:30 #17
Vældig underligt... Prøv engang at lav en ny testside.
Bare træk tabellen ind på formen via serverexploreren, og sæt div properties så du kan editere mv.
... Kunne være at rart at vide om det så virker.
Mvh
Avatar billede bongo20 Nybegynder
28. maj 2006 - 17:59 #18
Nu lavede jeg en ny aspx fil,. trak en table ind fra server exploren, satte de samme properties som jeg ellers bruger (delete, paging, editing) og det virkede glimrende, opdaterede databasen.

Så smed jeg de 3 filer over på serveren (test.aspx, test.aspx.cs, web.config) og den opdaterer ikke, og giver ingen fejl.

:-(((
Avatar billede snepnet Nybegynder
28. maj 2006 - 18:16 #19
Prøv at generér den igen... Der er sikkert et eller andet lille issue med den.
Mvh
Avatar billede bongo20 Nybegynder
28. maj 2006 - 19:08 #20
Den sidste fik jeg ikke snepnet,.. opdateringsfejlen er der stadig..
Avatar billede snepnet Nybegynder
28. maj 2006 - 20:10 #21
Jeg mente bare at du skulle prøve at generere siden igen (altså den der fejler) - evt. bare ved at trække den ind på en form.
Der er sikkert blot et eller andet issue med den.
Mvh
Avatar billede bongo20 Nybegynder
28. maj 2006 - 20:18 #22
Har jeg prøvet nu,. uanset hvordan jeg gør det kan jeg ikke få den til at opdatere når den ligger på webhotellet, og jeg kan ikke få den til at lade være når jeg gør det fra min egen iis eller vs2005.

Lidt frustrerende efterhånden
Avatar billede snepnet Nybegynder
28. maj 2006 - 20:43 #23
Ja - ikke særlig fedt.
Kan du lave en opdatering i databasen, hvis du bare skriver noget manuel kode til det, og benytter samme connectionstring?
Mvh
Avatar billede bongo20 Nybegynder
28. maj 2006 - 20:57 #24
Ja det kan jeg godt,. alt virker faktisk  rigtig godt, bortset fra opdateringer fra GridView,..

Min virtuelle mappe er oprettet som medium trusted mode.
Kan det betyde noget?
Avatar billede snepnet Nybegynder
30. maj 2006 - 14:13 #25
Ved det ikke .... Har du prøvet at ændre det?
Mvh
Avatar billede bongo20 Nybegynder
27. august 2006 - 18:56 #26
du får pointene for god hjælp snepnet,. jeg løste det på en helt anden måde,. men det er ikke din skyld :-)

smider du et svar?
Avatar billede snepnet Nybegynder
27. august 2006 - 18:59 #27
Jamen så siger jeg tak :o)
Hvordan fiksede du det?
Mvh
Avatar billede bongo20 Nybegynder
01. september 2006 - 13:11 #28
Uden GridView :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester