[ASP.NET - C#] Set property tussen twee User controls

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-09 09:47

dj_vibri

int(e^x) = f(u)^n

Topicstarter
allen,

ik ben wat aan het prutsen met asp.net en c# maar ik geraak er niet uit :(

De bedoeling is om een SOORT van master-detail view te maken waar ik twee user controls heb:
- customerSelect.ascx
- customerDetail.ascx

De customerselect bestaat uit een dropdownlist, de CustomerDetail uit een gridview.

Wanneer ik in de 'customers.aspx' webpagina deze beide user controls zet kan ik wel mijn dropdown opvullen, maar wanneer ik een item selecteer wordt er niets met de 'CustomerDetail' gedaan.

In de customerdetail heb ik een Property 'CustRowDetail'
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 public partial class CustomerDetail : System.Web.UI.UserControl
    {
        public DSNorthwind.CustomersRow CustRowDetail { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                if (CustRowDetail != null)
                {
                    LblNaam.Text = CustRowDetail.Address;    
                }                
            }
        }
    }


In de customerselect op het event wanneer een item geselecteerd wordt heb ik het volgende:

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
 public partial class CustomerSelect : System.Web.UI.UserControl
    {
        DBManager facade = new DBManager();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                DSNorthwind.CustomersDataTable custDT = facade.GetCustomers();
                DropDownList1.DataSource = custDT;
                DropDownList1.DataValueField = custDT.IDColumn.ColumnName;
                DropDownList1.DataTextField = custDT.First_NameColumn.ColumnName;

                DataBind();
            }
        }

        protected void DdlCustomers_SelectedIndexChanged(object sender, EventArgs e)
        {
            Int32 SelectedCustomer = Int32.Parse(DropDownList1.SelectedValue);
            DSNorthwind.CustomersDataTable custDT = facade.GetCustomerDetailByID(SelectedCustomer);
                        
            CustomerDetail CustDet = new CustomerDetail();
            CustDet.CustRowDetail = custDT[0];
        }
    }


De bedoeling is dus dat ik mijn datarow in de property steek van mijn tweede user control. Wanneer ik debug merk ik dat hij nog geen eens naar de property 'springt' om deze te setten....

Iemand enig idee?

ps: DBManager is een klasse waar tot nu toe twee methodes in staan :)

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je komt wel in de DdlCustomers_SelectedIndexChanged methode? Zo ja, op welke regel stopt dat dan?

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • dj_vibri
  • Registratie: Oktober 2007
  • Laatst online: 09-09 09:47

dj_vibri

int(e^x) = f(u)^n

Topicstarter
Niemand_Anders schreef op vrijdag 23 oktober 2009 @ 10:21:
Je komt wel in de DdlCustomers_SelectedIndexChanged methode? Zo ja, op welke regel stopt dat dan?
Hier kom ik inderdaad in en guess what..... Ik had mijn property eens voluit geschreven (dus niet met prop, tab tab gewerkt) en dan kan ik wel succesvol debuggen.....

Wist dus totaal niet dat je met een verkorte notatie niet in de property komt.... :s

Last night I lay in bed looking up at the stars in the sky and I thought to myself, where the heck is the ceiling.


Acties:
  • 0 Henk 'm!

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 10-09 20:32
Je vergeet DataBind aan te roepen op je detail control ??

En inderdaad als je een autoproperty "notatie" gebruikt dan behandeld de debugger dat als een variabele en geen property. An sich logisch aangezien er geen expliciete variabele meer achter zit.