Toon posts:

[ASP.NET/C#] - DataGrid opbouwen, beginnend met XML-bestand

Pagina: 1
Acties:

Verwijderd

Topicstarter
Aangezien ik hier totaal nieuw in ben, wil ik vragen of ik het volgende probleem goed oplos:

Ik krijg m.b.v. een SQL-query ongeveer het volgende bestand binnen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<BBXML>
    <SIGNONMSGRS>
        <DTSERVER>2005-09-19T11:35:51</DTSERVER>
        <APPVER>0700A</APPVER>
    </SIGNONMSGRS>
<SQLQUERYRS>    <xsd:schema id="SQLQUERYRS" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:element name="SQLQUERYRS" msdata:IsDataSet="true">
            <xsd:complexType>
                <xsd:choice maxOccurs="unbounded">
                    <xsd:element name="crs_select" minOccurs="0" maxOccurs="unbounded">
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name="add_by">
                                    <xsd:simpleType>
                                        <xsd:restriction base="xsd:string">
                                            <xsd:maxLength value="10"/>
                                        </xsd:restriction>
                                    </xsd:simpleType>
                                </xsd:element>
                                <xsd:element name="cng_date" type="xsd:dateTime" minOccurs="0"/>
                            </xsd:sequence>
                        </xsd:complexType>
                    </xsd:element>
                </xsd:choice>
                <xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/>
            </xsd:complexType>
        </xsd:element>
    </xsd:schema>
    <crs_select>
        <add_by>S</add_by>
        <cng_date>2005-09-16T11:28:52</cng_date>
    </crs_select>
    <crs_select>
        <add_by>S</add_by>
        <cng_date>2005-09-16T11:29:10</cng_date>
    </crs_select>
</SQLQUERYRS></BBXML>

M.b.v. DataSet.ReadXML lees ik dit in een DataSet. Vervolgens wil ik dit in een DataGrid tonen, maar als ik de volgende code uitvoer, krijg ik de error dat de kolommen niet kunnen worden ingesteld:

code:
1
2
3
4
5
6
7
TextReader sr = DoSqlQuery(); // dit gebeurt anders, maar dit is ook niet van belang. In sr komt dan het xml-bestand te staan die ik hierboven heb geplaatst.
DataSet ds = new DataSource("SqlQuery);
ds.Locale = CultureInfo.InvariantCulture;
ds.ReadXML(sr);
ds.AcceptChanges();
DataGrid1.DataSource=ds;
DataGrid1.DataBind();

Wat moet ik hier nog aan veranderen? Het XML-bericht wordt door de server waar ik de request heenstuur automatisch gegenereerd, ik kan hier verder niets aan veranderen. Moet ik met views gaan werken?

Met een DataList wil het wel, maar ik moet het in een soortement van tabel krijgen, vandaar mijn keuze voor de DataGrid.

Edit: dit is de precieze foutmelding: DataGrid with id 'DataGrid1' could not automatically generate any columns from the selected data source.

[ Voor 31% gewijzigd door Verwijderd op 19-09-2005 12:50 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Dan moet je zelf BoundColumns aanmaken en toevoegen aan de Column Collection :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
@Gorgi: Bedankt weer :)

Als ik ds.GetXML() uitvoer, krijg ik de volgende XML-code te zien:

code:
1
2
3
4
5
6
7
8
9
10
<SQLQUERYRS>
  <crs_select>
    <add_by>S</add_by>
    <cng_date>2005-09-16T11:28:52.0000000+02:00</cng_date>
  </crs_select>
  <crs_select>
    <add_by>S</add_by>
    <cng_date>2005-09-16T11:29:10.0000000+02:00</cng_date>
  </crs_select>
</SQLQUERYRS>

Ik moet dus twee BoundColumns add_by en cng_date maken? Moet ik ook nog ergens invoeren dat een item de xmltag crs_select heeft?

/Edit: als ik ipv ds.DefaultViewManager ds invul, gaat het wel goed... Nu nog even uitvogelen hoe ik de headers aanpas, maar dat gaat vast wel lukken :).

[ Voor 24% gewijzigd door Verwijderd op 19-09-2005 13:12 ]


Verwijderd

Topicstarter
Ik heb nu AutoGenerateColumns uitgezet en twee boundcolumns toegevoegd. HeaderText en Datafield ingesteld, gaat prima. Echter, ik heb nu ook een select kolom toegevoegd via de properties (dus niet zelf geprogd zoals bij de boundcolumns).

Als ik dan op die Selectkolom klik, verdwijnen opeens beide kolommen! Hoe kan dit nou weer dan? Als ik AutoGenerateColumns aanzet, gaat het wel goed...

/Edit: ja hoor... Als ik alles via de property-editor doe, gaat het wel goed. Sorry voor de post.

[ Voor 32% gewijzigd door Verwijderd op 19-09-2005 13:43 ]


Verwijderd

Leuk spul he, dat VS.Net? ;)

@gorgi_19: true ... maar veel van die databind / server control zut werkt heel leuk declaratief. Als je echt mooie HTML wil maken, zal je vrijwel altijd in de code moeten duiken, vrijwel in alle ontwikkelomgevingen.

[ Voor 80% gewijzigd door Verwijderd op 19-09-2005 14:14 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Tip: De html editor van VS.Net zuigt.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op maandag 19 september 2005 @ 14:11:
[...]

Tip: De html editor van VS.Net zuigt.
Klopt, als je iets copy-paste maakt ie er dikke troep van. Ook zet ie allemaal tags erin die je eigenlijk niet wilt. Maar het werkt allemaal wel zo'n beetje :+.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op maandag 19 september 2005 @ 14:08:
@gorgi_19: true ... maar veel van die databind / server control zut werkt heel leuk declaratief. Als je echt mooie HTML wil maken, zal je vrijwel altijd in de code moeten duiken, vrijwel in alle ontwikkelomgevingen.
Klopt; maar in de codebehind kan je ook heel erg veel oplossen. Door een aantal standaardoplossingen te maken creeer je een hoop flexibiliteit. Hoewel drag 'n drop handig lijkt, prefereer ik toch liever de code (met intellisense) :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1