Laden...

[gelöst] Relation nur mit Datasource oder Databinding

Erstellt von dgroeser vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.720 Views
D
dgroeser Themenstarter:in
135 Beiträge seit 2006
vor 17 Jahren
[gelöst] Relation nur mit Datasource oder Databinding

Hallo,

ich habe eine Frage, ich habe zwei Textfiles (Haupttabelle und untertabelle) die ich in ein Dataset einlese, wenn ich jetzt diese getrennt anzeigen möchte d. h. ich möchte zwei Datagrids auf einer Form haben, wenn ich eine Zeile in der Hauptform anwähle möchte ich das das zweite Datagrid (untertabelle) automatisch abhängig von den Relationen gefiltert wird?

Langt es zu wenn ich da nur einen Dataset einer Grid zuweise oder muss ich da mit Bindingsource arbeiten?

War ein Codefehler, trotzdem danke

563 Beiträge seit 2004
vor 17 Jahren

BindingSource ist "nur" eine Hilfsklasse, du kannst auch direkt binden ohne BindingSource (empfehle ich dir nicht).

In der MSDN hat es einen Artikel namens "How to: Create a Master/Detail Form Using Two Windows Forms DataGridView Controls ". Such mal nach dem Artikel!

Langt es zu wenn ich da nur einen Dataset einer Grid zuweise oder muss ich da mit Bindingsource arbeiten?

Wie im Artikel ersichtlich ist, bindest du das zweite DataGridView an die Relation (-> dataset.Releations.Add(...)), ob du da ein BindingSource verwendest oder nicht, spielt keine Rolle. BindingSource vereinfacht vieles, da man z.b besser auf den currencymanager zugreifen kann.

Gruss,
.unreal

D
dgroeser Themenstarter:in
135 Beiträge seit 2006
vor 17 Jahren



            cWareInputs objWareInputs = cWareInputs.WareInputs;
            m_WareInputsDataSet = objWareInputs.WareInputsDataSet;
            // DataRelation schaffen
            DataRelation WareInputRelation = new DataRelation("WareInputRelation",
                m_WareInputsDataSet.Tables["Posted Ware Input"].Columns["Bestellnr."],
                m_WareInputsDataSet.Tables["Ware Transfer"].Columns["Bestellnr."]);
            m_WareInputsDataSet.Relations.Add(WareInputRelation);

            bindingSourceWareInputs.DataSource = m_WareInputsDataSet;
            bindingSourceWareInputs.DataMember = "Posted Ware Input";
            
            dataGridWareInputs.DataSource = bindingSourceWareInputs;


Habe folgendes Problem oder ich blicke es nicht, ich benutze das Compact Framework.

  1. Ich erstelle eine Datenrelation

  2. jetzt ordne ich den Dataset mit Relation der bindingsource zu

  3. danach ordne ich die bindingsource der Datagrid zu(datagridview gibt es im cf2.0 nicht)

Wie mache ich das jetzt wenn ich die zweite Tabelle zusätzlich auf der Form mit anzeigen möchte abhängig von der relation?

563 Beiträge seit 2004
vor 17 Jahren

Als DataMember der Name der Relation angeben. Steht übrigens im MSDN-Artikel der ich dir gepostet habe drin.

.unreal

D
dgroeser Themenstarter:in
135 Beiträge seit 2006
vor 17 Jahren


      cWareInputs objWareInputs = cWareInputs.WareInputs;
            m_WareInputsDataSet = objWareInputs.WareInputsDataSet;
            // DataRelation schaffen
            DataRelation WareInputRelation = new DataRelation("WareInputRelation",
                m_WareInputsDataSet.Tables["Posted Ware Input"].Columns["Bestellnr."],
                m_WareInputsDataSet.Tables["Ware Transfer"].Columns["Bestellnr."]);
            m_WareInputsDataSet.Relations.Add(WareInputRelation);

            bindingSourceWareInputs.DataSource = m_WareInputsDataSet;
            bindingSourceWareInputs.DataMember = "Posted Ware Input";

            bindingSourceWareTransfer.DataSource = m_WareInputsDataSet;
            bindingSourceWareTransfer.DataMember = "Ware Transfer";

            dataGridWareInputs.DataSource = bindingSourceWareInputs;
            dataGridWareTransfer.DataSource = bindingSourceWareTransfer;


hab es jetzt folgender maßen gemacht kommt aber eine fehlermeldung

These columns don't currently have unique values.

D
dgroeser Themenstarter:in
135 Beiträge seit 2006
vor 17 Jahren

jetzt weiß ich was du gemeint hast leider kommt bei meinen Code noch folgender fehler

DataMember property 'Ware Transfer' cannot be found on the DataSource.




            cWareInputs objWareInputs = cWareInputs.WareInputs;
            m_WareInputsDataSet = objWareInputs.WareInputsDataSet;
            // DataRelation schaffen
            DataRelation WareInputRelation = new DataRelation("WareInputRelation",
                m_WareInputsDataSet.Tables["Posted Ware Input"].Columns["Bestellnr."],
                m_WareInputsDataSet.Tables["Ware Transfer"].Columns["Bestellnr."]);
            m_WareInputsDataSet.Relations.Add(WareInputRelation);

            bindingSourceWareInputs.DataSource = m_WareInputsDataSet;
            bindingSourceWareInputs.DataMember = "Posted Ware Input";

            bindingSourceWareTransfer.DataSource = bindingSourceWareInputs;
            bindingSourceWareTransfer.DataMember = "Ware Transfer";

            dataGridWareInputs.DataSource = bindingSourceWareInputs;
            dataGridWareTransfer.DataSource = bindingSourceWareTransfer;

563 Beiträge seit 2004
vor 17 Jahren

Als DataMember den Namen der DataRelation, sprich "WareInputRelation" angeben. Liest du überhaupt was ich schreibe?