2009. június havi bejegyzések

A ListView kétszer mondja. A ListView kétszer mondja.

Az ASP.NET ListView vezérlő sajnos a csillagok bizonyos együttállása esetén kétszer fordul az adatbázishoz. Látszólag nincs semmi extra a dologban, mégis SQL Profilerrel megnézve tisztán látszik, hogy a kapcsolt SqlDataSource SelectCommand utasítása kétszer fut be az adatbázis szerverbe.

Szerencsére ez nem mindig fordul elő, akkor azonban biztosan, ha a ListViewt beágyazzuk egy Web User Controlba (ascx), majd az beletesszük egy adatkötött vezérlőbe, például egy FormView-ba. Tehát a szerencsétlen csillagállás:

Page –> FormView –> FormView.ItemTemplate –> Web User Control –> ListView

A problémát az okozza, hogy a ListView inicializálásakor is történik egy adatkötés és a FormView is meghívja rajta a DataBind metódust. Sajnos nem ez az egyetlen adatkötési gond a ListView-val, kész csoda, hogy nem száll el StackOverflowExceptionnel.

Megoldás

Aki teljesen biztos magában, megoldhatja a fenti problémát azzal, hogy a FormViewtól érkező DataBindot nem engedi lefolyni a ListViewra, lehet például ezt írni a Web User Controlba:

  public override void DataBind()
  {
    // Kikommentezve: base.DataBind();
  }

Aki kevésbé merész, vagy szüksége van az ASCX DataBind metódusára, az keresztbetehet az Initben lezajló adatkötésnek azzal, hogy csak később, a Page_Loadban állítja be a ListView adatforrását, például így:

  protected void Page_Load( object sender, EventArgs e )
  {
    this.ListView1.DataSource = this.SqlDataSource1;
  }

Egyelőre úgy tűnik, hogy a probléma csak a ListView vezérlőt érinti, a Repeaterrel nincs gond.

A hibás működést és a javítást tartalmazó példa kód letölthető innen.

Technorati-címkék: ,,,

Reklámok

Bing Is Not Google*

Elindult a Microsoft új keresője, ami most már szerencsére nem Live akármi, hanem egyszerűen csak Bing névre hallgat. Fogadni mernék, hogy ezt a szót hamarosan igeként is fogjuk használni és már nem csak olyan kifejezések hangzanak majd el, mint “meggugliztam”, hanem lesz “megbingeltem” is.

A cég nagyon nagyra van vele, még nem jöttem rá, hogy nekem mi hasznom származik belőle. Azt sikerült kideríteni, hogy ha a jobb felső sarokban Hungary van országként kiválasztva, akkor gyakorlatilag a Live Searchöt kapom egy új URL-en, ezért célszerű átállítani mondjuk United Statesre, akkor megjelenik néhány extra funkció:

  • Van például bal oldalon a Related Search felett egy névtelen szekció, ami az eddigi tapasztalataim alapján csak akkor éled fel, ha már az általunk beírt kereső kifejezés is angol volt, akkor add ötleteket a szűkítésre. Nálam például “pollen allergia” esetén nem segít, de ha “pollen allergy”-re keresek, akkor dolgozni kezd.
  • A Related Search sem rossz, szintén segít szűkíteni.
  • Jópofa a találati listában a preview funkció, akkor jön elő, ha egy találat fölé viszem az egeret és a jobb oldalon megjelenő sárga bogyóra bökök.

Nektek mi a véleményetek, tetszik, érdemes használni?

———-

*: Forrás: Christian Weyer