C# Datagrid event handling (code behind)

Pagina: 1
Acties:

  • FvH
  • Registratie: Oktober 2001
  • Laatst online: 09-04 15:06

FvH

Aan het typen...

Topicstarter
Hi,

Ben bezig met een projectje waar ik componenten runtime moet genereren. Lukt op zicht super, maar nu ben ik bezig met een Master-Detail weergave van een MS SQL server db.

Nu krijg ik het prima voor elkaar om de relation tussen de master table en de detail table te leggen. Het enige probleem is dit:

Ik heb een button-column in m'n master datagrid. "show detail". Als je daar op klikt moet de detail tabel de "detail" info laten zien van dat record.

nu probeer ik met de volgende regel code:
C#:
1
myDGMaster.ItemCommand += new DataGridCommandEventHandler(this.Master_cmdShowDetails);

de klik op show detail naar mijn functie Master_cmdShowDetails te gooien. Die functie ziet er als volgt uit:
C#:
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
        public void Master_cmdShowDetails(object sender, DataGridCommandEventArgs e)
        {
            int rowCtr;
            rowCtr = e.Item.ItemIndex;

            try
            {
                DataRow[] ChildRows = ds.Tables["Customers"].Rows[rowCtr].GetChildRows("Orders");

                foreach(DataRow dr1 in ChildRows)
                {
                    dr = dt.NewRow();
                    dr.ItemArray = dr1.ItemArray;
                    dt.Rows.Add(dr);
                }
 
                DataView dv = new DataView(dt);
                myDGDetail.DataSource = dv;
                myDGDetail.DataBind();

            }
            catch(Exception ex)
            {
                Label lblEx = new Label();
                lblEx.Text = "Status: Exception: " + ex;
                myForm.Controls.Add(lblEx);
            }

        }


Ik krijg zodra ik op show details klik een error message (geprint door de "catch") dat er geen object-reference is. Het stomme is dat het sender-object goed staat (tijdens het debuggen) maar dat de "e" altijd 0x0 als waarde heeft.

Ik zal wel iets gigantisch doms zijn vergeten, maar ik zie het niet meer.

If you know, let me know :) Thx.

What are clouds made of? Linux servers mostly!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Op welke regel krijg je die error?

Gaat het hier trouwens over WinForms of WebForms? In het geval van WinForms moet je die DataGrid.DataBind() niet doen.

[ Voor 65% gewijzigd door whoami op 31-03-2003 12:45 ]

https://fgheysels.github.io/


  • alley
  • Registratie: Mei 2002
  • Laatst online: 18-08 20:40

alley

ahuh

Na een postback vul je waarschijnlijk je ds niet opnieuw

I am always doing that which I can not do, in order that I may learn how to do it. (Pablo Picasso)


Verwijderd

Het is trouwens beter om op het CurrentChanged event van de binding naar het grid te luisteren. En vervolgens de currentrow verkrijgen door die aan de BindingManagerBase te vragen.

Kijk hier maar eens:
http://msdn.microsoft.com...managerbaseclasstopic.asp

Tevens zal het helpen als je de eerste regel in je try block even opdeelt in stukjes.
Dat gecombineerd met de stacktrace zal je geven wat er null is.