Avatar billede testing Nybegynder
10. november 2006 - 19:01 Der er 3 kommentarer

Update DB via gridview

Hej

Jeg har følgende fejl når jeg prøver at opdatere min DB via et gridview:

Objektreferencen er ikke indstillet til en forekomst af et objekt.
Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få yderligere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.NullReferenceException: Objektreferencen er ikke indstillet til en forekomst af et objekt.

Kildefejl:


Linje 70:            parPrice.Value = p;
Linje 71:            parQuantity.Value = t.Text;
Linje 72:            parProductID.Value = ProductID.Text;
Linje 73:
Linje 74:            SqlParameter[] updateorder = new SqlParameter[4];

Håber der er en der lige kan se hvad fejlen er.

I får lige koden også:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        Label ProductID =  ((Label)GridView1.Rows[0].FindControl("ProductID"));

        SqlParameter parOrderID = new SqlParameter("@OrderID", SqlDbType.Int);
        SqlParameter parQuantity = new SqlParameter("@Quantity", SqlDbType.Int);
        SqlParameter parPrice = new SqlParameter("@Price", SqlDbType.Decimal);
        SqlParameter parProductID = new SqlParameter("@ProductID", SqlDbType.VarChar);


        DataControlFieldCell cell = (DataControlFieldCell)GridView1.Rows[e.RowIndex].Controls[3];
        DataControlFieldCell cell2 = (DataControlFieldCell)GridView1.Rows[e.RowIndex].Controls[4];

        TextBox t = (TextBox)cell.Controls[0];
        TextBox o = (TextBox)cell2.Controls[0];

       
        //id = ProductID.Text;

        try
        {
            decimal p = decimal.Parse(o.Text);
            parOrderID.Value = DropDownList1.SelectedValue;
            parPrice.Value = p;
            parQuantity.Value = t.Text;
            parProductID.Value = ProductID.Text;

            SqlParameter[] updateorder = new SqlParameter[4];
            updateorder[0] = parOrderID;
            updateorder[1] = parPrice;
            updateorder[2] = parQuantity;
            updateorder[3] = parProductID;

            DAL dal = new DAL();

            dal.ExecuteSQL("EditOrders", updateorder);
        }
        catch (FormatException)
        {
            e.Cancel = true;
        }

        GridView1.DataBind();


       
    }
Avatar billede snepnet Nybegynder
11. november 2006 - 10:07 #1
Du har flere mulige fejlkilder synes jeg. Kan du ikke vise den line der reelt fejler, og hvilken objektreference det er der er null.

Men ellers ... Du kan godt udnytte det argument du får med lidt bedre - der er mange relevante properties på det - f.eks.:
e.NewValues
e.Keys
e.OldValues

Desuden kan du lave templates til dit gridview, og få fat i dine kontroller lidt nemmere - f.eks.:

TextBox tb = GridView1.Rows[e.RowIndex].FindControl("textboxid") as TextBox;

Og en anden ting ... har du kigget på en ObjectDataSource?

Mvh
Avatar billede testing Nybegynder
11. november 2006 - 11:33 #2
Nej, det har jeg ikke. Hvad kan sådan en?
Avatar billede snepnet Nybegynder
11. november 2006 - 12:38 #3
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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