Avatar billede frosty-dk Nybegynder
22. november 2007 - 19:18 Der er 10 kommentarer

Count rows i gridview

Hej eksperter,

Jeg har et Gridview som består af en masse koncerter, når man klikker på en af koncerterne kommer man ind og kan skrive og se kommentare om den valgte koncert, jeg vil gerne lave så der er en label(LblCount) i hver række i gridviewet som counter hvor mange kommentare der er i den anden tabel, tabellerne har relation via ConcertID.

Jeg har lavet den stored procedure:
    @ConcertID int
AS
    SELECT COUNT(*) As Antal
    FROM FetusConComment
    WHERE ConcertID = @ConcertID
    RETURN

og den kan hentes fra min dal klasse:
dal.GetScalar("CountAll").ToString();

men hvordan får jeg sat det ind i gridviewet og i hvilket Event skal hele koden ligge? 
..håber i forstår og kan hjælpe

Hilsen,
Thomas Frost
Avatar billede neoman Novice
22. november 2007 - 19:54 #1
I RowDataBound bindes en række fra Db til en række i gridviewet, og du kan ændre på ting derinde. http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.rowdatabound(VS.80).aspx
Avatar billede frosty-dk Nybegynder
22. november 2007 - 20:13 #2
hmm kan ikke helt få det til at virke, virker kun hvis det er en label uden fra gridviewet og under: SelectedIndexChanged

med denne kode:
string ID = GridView1.SelectedDataKey.Value.ToString();
dal.ClearParameters();
dal.AddParameter("ConcertID", ID, DbType.Int32);
LblCount.Text = dal.GetScalar("CommentCount").ToString();
Avatar billede neoman Novice
22. november 2007 - 20:15 #3
har du kigget på kodet til det eksempel som viser hvordan man tilgår en værdi i en række ?
  void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
  {
       
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
      // Display the company name in italics.
      e.Row.Cells[1].Text = "<i>" + e.Row.Cells[1].Text + "</i>";
       
    }
   
  }
Avatar billede neoman Novice
22. november 2007 - 20:15 #4
kodeN

"kan ikke få det til at virke..." vis hellere hvad du har gjort og fortæl havdden gør/ikke gør
Avatar billede frosty-dk Nybegynder
22. november 2007 - 20:25 #5
altså har kigget på det og ville umidelbart sige:

            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                e.Row.Cells[i].Text = "<i>" + e.Row.Cells[i].Text + "</i>";
            }
til at starte med, og så derefter få sat counten ind i stedet for:
"<i>" + e.Row.Cells[i].Text + "</i>";

men kan ikke få den nuværende loop til at virke fordi den der rows.count åbenbart er forkert?
Avatar billede neoman Novice
22. november 2007 - 20:29 #6
"åbenbart forkert" ? hvordan ser du det ? husk jeg ikke kan se din skærm
Dette duer jo ikke i en fritstående loop da e er en parameter fra RowDataBound eventet.

derinde  ( i handleren for RowDataBound):
      e.Row.Cells[1].Text = dal.GetScalar("CommentCount").ToString()

og din ConcertID , hvis den er i DataKeyNames for gridviewet, kan du få fat i fra
GridView1.DataKeys(e.Row.RowIndex).Value
Avatar billede neoman Novice
22. november 2007 - 20:32 #7
Prøv lige at tage et kig på docs - i er celleindex i rækken, ej rækkeindex i rækkesamlingen.
Avatar billede frosty-dk Nybegynder
22. november 2007 - 20:42 #8
Fået det her indtil videre:

int ID = GridView1.DataKeys(e.Row.RowIndex).Value;
dal.AddParameter("ConcertID", ID, DbType.Int32);
e.Row.Cells[1].Text = dal.GetScalar("CommentCount").ToString();

fejl: "datakeys is a property but used like a method"

tror jeg skal have det vist før jeg kan få det fikset desværre.
Avatar billede neoman Novice
22. november 2007 - 20:44 #9
det er fordi jeg koder vb normalt.

Når du får en fejlmeddelelse så er det en god lejlighed til at kigge på hvad den siger og hvad det kan betyde - så gør man det kun een gang;)

int ID = GridView1.DataKeys[e.Row.RowIndex].Value;
Avatar billede frosty-dk Nybegynder
22. november 2007 - 20:52 #10
plejer også at søge når den finder fejl men synes det er svært at finde noget til det her, og rimelig ny i at bruge SDK'en

den siger at det er et object så, og hvis jeg konvertere det til int siger den noget med connectionen stadig er åben?
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