Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Öka performance... DataBinder.Eval vs. DbDataRecord

Postad 2004-11-14 av Stanley Broo i sektionen ASP.NET, C#, Okategoriserat med 1 Kommentarer | Läst av: 4485, Betyg: 60%

Förord

I denna artikel så tänkte jag ta upp fördelen med att explicit casta outputen istället för att använda DataBinder.Eval på .aspx sidan. DataReader använd DbDataRecord:<%#((DbDataRecord)Container.DataItem)["CompanyName"]%> DataSet använd DataRowView:<%#((DataRowView)Container.DataItem)["CompanyName"]%> DataBinder.Eval fungerar både för Reader och DataSet <%#DataBinder.Eval(Container.DataItem,"CompanyName")%> ..men är ca 10-20% slöare.
Innehåll
  » EXEMPEL 1
  » EXEMPEL 2
Relaterade artiklar
  » CUSTOM CLASSES vs. DataSet
Fördelen med DataBinder.Eval metoden är att den funkar för alla datakällor (dataSource=reader eller dataset), dvs om du skulle ändra från ex. en DataReader till ett DataSet i framtiden så behöver du inte gå in och ändra i dina .aspx sidor.

Fördelen med att använda explicit DataRowView för Dataset och DbDataRecord för DataReader är performance. Hur mkt är jag osäker på men jag har hört allt från 10-20%. Testa gärna och lämna en kommentar så vet jag också.



Ok, då sätter vi igång. Först ska vi skapa codebehind sidan som hämtar lite kunddata från Northwind Customers table med en DataReader.



Repeater.aspx.cs (codebehind)

using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.Common; // Detta namespace måste du använda för att komma åt "DbDataRecord"
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace DataReader
{
public class Repeater : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Repeater Repeater1;
protected System.Web.UI.WebControls.ListBox ListBox1;

private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack){BindToRepeater();}
}
private void BindToRepeater(){
SqlConnection con= new SqlConnection("server=(local);database=Northwind;uid=sa;pwd=sa;");
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "SELECT CustomerID,CompanyName,ContactName FROM Customers";
cmd.Connection = con;
conn.Open();
SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
Repeater1.DataSource = dr;
Repeater1.DataBind();
dr.Close();
}
}
}


Ok nu skapar vi .aspx sidan.



I exempel:1 så knyter jag datan med DataBinder.Eval och i exempel:2 så knyter vi med DbDataRecord ...eftersom vi använder en DataReader i codebehind. Hade vi använt oss av ett DataSet i codebehind så skulle vi istället använda DataRowView för att ta fram datan.


EXEMPEL 1


DataBinder.Eval ..så här brukar det se ut i de flesta exempel på både nätet och i böcker.
Repeater.aspx

<%@ Page language="c#" Codebehind="Repeater.aspx.cs" AutoEventWireup="false" Inherits="DataReader.Repeater" %>



Repeater










  • <%#DataBinder.Eval(Container.DataItem,"CompanyName")%>










  • EXEMPEL 2

    Använd istället "DbDataRecord" när du använder en DataReader.
    Repeater.aspx

    <%@ Page language="c#" Codebehind="Repeater.aspx.cs" AutoEventWireup="false" Inherits="DataReader.Repeater" %>



    Repeater










  • <%#((DbDataRecord)Container.DataItem)["CompanyName"] %>



  • Tips! Ifall compilerna inte hittar DataRowView eller DbDataRecord pröva med att lägga till hela sökvägen
    ex. System.Data.Common.DbDataRecord och System.Data.DataRowView för DataSet.





    Det ända du behöver göra för att komma åt DataReaderns explicit DbDataRecord är att importera namespacet till din codebehind class.
    USING SYSTEM.DATA.COMMON;


    Stanley Broo - GBO Media
    Upp

    1 Kommentarer


    1. Kristoffer Johansson
      1 jun 2005

      Jag arbetar själv med händelsen ItemDataBound för att minska mängden programkod i aspx-sidan. Istället har jag bl.a labels och HyperLinks som populeras när posten databinds. Hur påverkar det prestandan? Blir sidan tyngre eller lättare månne?

    Skriv en kommentar på artikeln

    Ditt betyg på artikeln



    Kommentar:





    Nyligen

    • 09:09 Vill du köpa medicinska tester?
    • 12:47 Vem beviljar assistansen – kommune
    • 14:17 Någon med erfarenhet av hemstädnin
    • 14:14 Bör man använda sig av en båtförme
    • 14:12 Finns det någon intressant hundblo
    • 14:25 Tips på verktyg för att skapa QR-k
    • 14:23 Tips på verktyg för att skapa QR-k
    • 20:52 Fungerer innskuddsbonuser egentlig

    Sidor

    • Hem
    • Bli bonusmedlem
    • Läs artiklar
    • Chatta med andra
    • Sök och erbjud jobb
    • Kontakta oss
    • Studentlicenser
    • Skriv en artikel

    Statistik

    Antal besökare:
    Antal medlemmar:
    Antal inlägg:
    Online:
    På chatten:
    4 569 153
    27 952
    271 704
    1 169
    0

    Kontakta oss

    Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

    © 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
    • Om
    • Kontakta
    • Regler
    • Cookies