Avatar billede muggen Nybegynder
02. februar 2006 - 22:58 Der er 11 kommentarer og
1 løsning

Vælg indsat record i gridview efter oprettelse i detailsview

Jeg har et gridview og et detailsview ved siden af hinanden i Visual Studio 2005 (ASP.NET 2.0). Jeg opretter nye records i detailsview. Når jeg opretter en ny record i detailsview bruger jeg OnItemInserted eventen til binde til data igen så gridview'et bliver opdateret:

Gridview1.DataBind();

Det virker fint. Mit spørgsmål er så: Hvordan sørger jeg for at den nyindsatte record i gridview'et bliver valgt med det samme, så den også er valgt i detailsview'et? Jeg har på fornemmelsen at jeg skal bruge GridViewSelectEventArgs Class, men jeg er ikke helt sikker på, hvad jeg skal gøre.
Avatar billede snepnet Nybegynder
02. februar 2006 - 23:50 #1
du kan sætte grid.SelectedIndex = ... inden du kalder databind.
mvh
Avatar billede muggen Nybegynder
03. februar 2006 - 08:22 #2
Skal det ikke være Gridview1.SelectedIndex = ? Hvad er det helt nøjagtigt SelectedIndex skal være lig med? Det skal være lig med den sidst indsatte record i gridview'et. Med andre ord: Hvad er det der skal stå på den højre side af lighedstegnet?
Avatar billede dr_chaos Nybegynder
03. februar 2006 - 09:23 #3
hvis det du indsætter bliver vist som sidste row i gridviewet bruger du:
Gridview1.SelectedIndex = Gridview1.Rows.Count-1;
Avatar billede muggen Nybegynder
03. februar 2006 - 10:43 #4
Jeg vil faktisk gerne sætte GridView1.SelectedIndex = "Det BookID" jeg lige netop har oprettet, hvor BookID er bogens ISBN # (primær nøgle oprettet som streng-felt i databasen). Er det muligt?
Avatar billede dr_chaos Nybegynder
03. februar 2006 - 11:06 #5
du kan gøre noget i denne stil:

foreach (GridViewRow r in Gridview1.Rows)
            {
                if (r.Cells[0].Text == "etisbn")
                {
                    Gridview1.SelectedIndex = r.RowIndex;
                }
            }

Cells[0] skal skiftes med det columnindex dit isbn nummer har.

Det kan være der er en smartere metode.
Men jeg har ikke brugt andre.
Avatar billede muggen Nybegynder
03. februar 2006 - 11:27 #6
Hvad med den værdi jeg søger efter? BookID er jo en ny værdi for hver ny record jeg sætter ind. Med andre ord: Hvordan erstatter jeg "etisbn" med lige nøjagtig det BookID som jeg har sat ind?
Avatar billede muggen Nybegynder
03. februar 2006 - 13:39 #7
Har fundet resten af løsningen selv, men send alligevel som svar så du kan få dine point. Tak for hjælpen. Jeg indsætter lige løsningen i tilfælde af, at andre kan bruge den.

public void BookDetail_ItemInserted(object sender,
    DetailsViewInsertedEventArgs e)
    {
        String bookAddedID = e.Values["BookID"].ToString();
        String bookAddedTitle = e.Values["Title"].ToString();
       
        foreach (GridViewRow r in GridView1.Rows)
        {
            if (r.Cells[0].Text == bookAddedID)
            {
                GridView1.SelectedIndex = r.RowIndex;
            }
        }
       
        GridView1.DataBind();

        lblMessage.Text = "You have successfully added" + bookAddedTitle + " to the list of books!";
    }
Avatar billede muggen Nybegynder
03. februar 2006 - 14:15 #8
Jeg var vist lidt hurtig, for det virker stadigvæk ikke helt efter hensigten. Vender tilbage lidt senere!
Avatar billede dr_chaos Nybegynder
03. februar 2006 - 14:17 #9
prøv med
public void BookDetail_ItemInserted(object sender,
    DetailsViewInsertedEventArgs e)
    {
        String bookAddedID = e.Values["BookID"].ToString();
        String bookAddedTitle = e.Values["Title"].ToString();
      GridView1.DataBind();
        foreach (GridViewRow r in GridView1.Rows)
        {
            if (r.Cells[0].Text == bookAddedID)
            {
                GridView1.SelectedIndex = r.RowIndex;
break;
            }
        }
     
       

        lblMessage.Text = "You have successfully added" + bookAddedTitle + " to the list of books!";
    }
Avatar billede muggen Nybegynder
04. februar 2006 - 00:37 #10
Hmmm - det virker stadigvæk ikke. Jeg får indsat den nye record uden problemer, men den vælger stadig ikke den nye record i gridview'et. Jeg har prøvet at debugge nu for at se hvad der går galt. Når jeg initialiserer variablen bookAddedID får den den rigtige værdi (f.eks. "0-1234-3456-0"). Men når jeg kommer ned til r.Cells[0].Text er værdien "" (tom). Hvad går der galt her??
Avatar billede muggen Nybegynder
04. februar 2006 - 01:12 #11
Så virker det. Det var mit columnindex der var problemet som du (dr chaos) havde gjort mig opmærksom på det til at starte med. BookID har i mit grid columnindex 1, så Cells[1] er den rigtige løsning i mit gridview. Send som svar, dr chaos, så får du dine point. Mange tak for hjælpen!!
Avatar billede dr_chaos Nybegynder
04. februar 2006 - 09:27 #12
svar :)
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