Avatar billede jepjo Nybegynder
12. november 2004 - 18:12 Der er 4 kommentarer

Mine objekter forsvinder?!

Nedenstående er taget fra noget code fra en aspx.side. Problemet er at ved postback dør CheckBoxarrayet, og jeg kan ikke udføre den ønskede kontrol.

public string bitrow = "000000000000000000";
    public CheckBox[] cbarray;

    void Page_Load(object sender, System.EventArgs e){

        cbarray = new CheckBox[bitrow.Length];
        for(int i=0;i<cbarray.Length;i++){
            if(cbarray[i].Checked)
                bitrow.Replace(bitrow[i],'1');
        }

        Label1.Text=bitrow;

        for(int i=0;i<cbarray.Length;i++){
            cbarray[i] = new CheckBox();
            // set Text, ID og PostBack properties
            cbarray[i].Text = "item" + i.ToString();
            cbarray[i].ID = "chkbox" + i.ToString();
            cbarray[i].AutoPostBack=true;
            PlaceHolder1.Controls.Add(cbarray[i]);
           
            PlaceHolder1.Controls.Add(new LiteralControl("<br>"));
        }
    }

Jeg har læst rundt omkring at det nok har noget med Viewstate at gøre, men jeg er jo stadig lidt ny indenfor C# .Net, så i må have mig undskyldt!
Avatar billede Slettet bruger
14. november 2004 - 11:47 #1
Du skal kun initializerer når det ikke er postback så sæt din initialisering i en

if(!IsPostBack) {
  // Initialization code here....
}
Avatar billede jepjo Nybegynder
15. november 2004 - 08:39 #2
Det har jeg prøvet: f.eks følgende

string bitrow;
    CheckBox[] cbarray;
    void Page_Load(object sender, System.EventArgs e)
    {
        if(!IsPostBack)
        {
            bitrow = "000000000000000000";
            cbarray = new CheckBox[bitrow.Length];

            for(int i=0;i<cbarray.Length;i++)
            {
                cbarray[i] = new CheckBox();
                // Set the label's Text and ID properties.
                cbarray[i].Text = "item" + i.ToString();
                cbarray[i].ID = "chkbox" + i.ToString();
                cbarray[i].AutoPostBack=true;
                PlaceHolder1.Controls.Add(cbarray[i]);
                // Add a spacer in the form of an HTML <BR> element.
                PlaceHolder1.Controls.Add(new LiteralControl("<br>"));
            }
        }

        for(int i=0;i<cbarray.Length;i++){
            if(cbarray[i].Checked)
                bitrow.Replace(bitrow[i],'1');


        }
        Label1.Text=bitrow;
    }

men uanset hvad jeg gør, når jeg vil kontrollere henhodsvis bitrow eller chkboxarray, så får jeg følgende fejl efter postback.
Server Error in '/' Application.
--------------------------------------------------------------------------------

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 26:        }
Line 27:
Line 28:          for(int i=0;i<cbarray.Length;i++){
Line 29:            if(cbarray[i].Checked)
Line 30:                bitrow.Replace(bitrow[i],'1');
Avatar billede burningice Nybegynder
15. november 2004 - 11:42 #3
bitrow... det er da en lokal variabel som kun findes indenfor dit if(!IsPostBack)-scope ?!
Avatar billede burningice Nybegynder
15. november 2004 - 11:43 #4
sorry... jeg mente at den bliver kun initialiseret der... bitrow-variablen husker ikke på sig selv ved postback, så den skal du sætte hver gang
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester