Toon posts:

[C#] DataRelation will niet lukken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een XML file dat ik gebruik om in een werkorder bon de tabs (per hoofdtaak 1) automatisch te genereren. Een hoofdtaak kan 0 of meer subtaken hebben, die dan in een dropdown komen te staan.
Zijn er geen subtaken, dan komt alleen de hoofdtaak zelf in de dropdown te staan. (in het onderstaande stukje code heb ik de hoofdtaak even gekopieerd naar de subtaken, om het testen even te versnellen (er bestaat nu dus altijd minimaal 1 subtaak))

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<workorder>
<task>
        <id>0</id>
        <lPaint>0</lPaint>
        <nHourPercentage>0.0</nHourPercentage>
        <cDescription>Demontage</cDescription>
        <mDescription>beschrijving</mDescription>
        <mDescriptionQuality>Demontage volgens </mDescriptionQuality>
        <subtasks>
            <subtask>
                <iTask>0</iTask>
                <cDescription>Demontage</cDescription>
                <mDescription>beschrijving</mDescription>
                <mDescriptionQuality>Demontage volgens </mDescriptionQuality>
            </subtask>
        </subtasks>
    </task>
    <task>
        <id>1</id>
        <lPaint>0</lPaint>
        <nHourPercentage>0.0</nHourPercentage>
        <cDescription>Plaatwerk</cDescription>
        <mDescription>beschrijving</mDescription>
        <mDescriptionQuality>Herstellen .....</mDescriptionQuality>
        <subtasks>
            <iTask>1</iTask>
            <subtask>
                <iTask>1</iTask>
                <cDescription>Plaatwerk</cDescription>
                <mDescription>beschrijving</mDescription>
                <mDescriptionQuality>Herstellen, ri...</mDescriptionQuality>
            </subtask>
            <subtask>
                <iTask>1</iTask>
                <cDescription>Richten</cDescription>
                <mDescription>beschrijving</mDescription>
                <mDescriptionQuality>Chassis.....</mDescriptionQuality>
            </subtask>
            <subtask>
                <iTask>1</iTask>
                <cDescription>Vernieuwen</cDescription>
                <mDescription>beschrijving</mDescription>
                <mDescriptionQuality>beschrijving</mDescriptionQuality>
            </subtask>
        </subtasks>
    </task>
<workorder>
, met de volgende code ingelezen en relatie toegevoegd
DataColumn parent;
DataColumn child;
this.tasks.ReadXml("config\\Tasks.xml", XmlReadMode.Auto);
parent = this.tasks.Tables["task"].Columns["id"];
child = this.tasks.Tables["subtask"].Columns["iTask"];
this.tasks.Relations.Add("relTaskParent", parent, child);


Ik wil nu de ChildTable van task (subtasks) gebruiken als DataSource van een ComboBox, maar ik heb echt geen idee hoe ik dat voor elkaar krijg. Heb al gebprobeerd rows te kopieren naar tijdelijke tabel, maar krijg dan steeds een ArgumentException, omdat de te kopieren Row al tot een andere DataTable behoord.....

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
Ik heb niet heel je code doorspit, maar een tabel van je dataset aan je datasource toewijzen doe je toch gewoon zo:

code:
1
MyDropDown.DataSource = MyDataSet.Tables[tableIndex];

of
code:
1
MyDropDown.DataSource = MyDataSet.Tables["tableName"];

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 29 September 2003 @ 13:57:
Ik heb niet heel je code doorspit, maar een tabel van je dataset aan je datasource toewijzen doe je toch gewoon zo:

code:
1
MyDropDown.DataSource = MyDataSet.Tables[tableIndex];

of
code:
1
MyDropDown.DataSource = MyDataSet.Tables["tableName"];
Dat lukt wel. maar ik wil alleen de subtaken voor Montage laten zien als ik op tabblad montage zit.

soortemet tekening :D. hheb geen FTP hier (VU :'( )
___________________
| Montage | tabs | tabs |
|------------------------------
|_________________ |
| subtaken montage | |
-----------------------------|
---------------------------------

[ Voor 19% gewijzigd door Verwijderd op 29-09-2003 14:05 ]


Verwijderd

Topicstarter
Gevonden, na Google helemaal ondersteboven te hebben gehaald kwam ik op MSDN (you gotta love it) het volgende stukje (enigszins aangepast door mij) tegen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void CreateDataTableFromRows(ref DataTable dt, DataRow[] rgRows)
{
    // Creates the new datatable with the same name
    DataTable dtOrig = rgRows[0].Table;
    dt = new DataTable(dtOrig.TableName); 

    // Duplicates the schema
    foreach(DataColumn dc in dtOrig.Columns)   
    {
        DataColumn tmp = new DataColumn(dc.ColumnName, dc.DataType);
        dt.Columns.Add(tmp);
    } 
    // Duplicates the data
    foreach(DataRow dr in rgRows)   
    {
        DataRow tmp = dt.NewRow();
        tmp.ItemArray = dr.ItemArray;
        dt.Rows.Add(tmp);
    }       
    return;
}