Div zu Ende scrollen erzwingen

Hallo zusammen,

lange gab es nichts neues von mir, aber nun habe ich mal wieder Zeit gefunden etwas zu posten. Themen habe ich genug im Draft :)  Ich komme leider nur nie dazu sie zu schreiben :(

Aber nun zum Thema. Ich stand vor dem Problem / der Aufgabe, dass ein Button erst aktiviert werden darf, wenn ein scrollbares Div zu Ende gescrollt worden ist. Gelöst habe ich es folgendermaßen:

Ich habe mir ein Control gebaut, welches die Kriterien eines IScriptControl erfüllt. Dies bedeutet, dass es gewisse Kriterien erfüllen und eine dazugehörige JavaScript-Datei haben muss.

Wie genau so eine Javascriptdatei aussehen muss seht ihr im Anhang. Einen Artikel zum IClientScriptControl werde ich demnächst auch noch schreiben.Es steht zumindest auf meiner TODO-Liste.
Hier zeige ich euch vorerst nur den relevanten Teil der JS-Datei. Diesen nachfolgenden Inhalt habe ich an den onscroll-Event meines Elements angefügt, welches zu scrollen war.

var elementHeight = $('#' + this.id() + ' .needtoscrolldowninnerpanel').height();
var scrollPosition = $('#' + this.id() + ' .needtoscrolldownouterpanel').height() +
$('#' + this.id() + ' .needtoscrolldownouterpanel').scrollTop();
if(elementHeight == scrollPosition)
{
$('#' + this.id() + ' .enableifscrolleddown').removeAttr('disabled');
}

Ich errechne mit mit JQuery die Höhe des Elementes, welches meinen zu scrollenden Text beinhaltet, und die aktuelle Scrollposition. Dann schaue ich, ob die Scrollposition gleich der Elementhöhe ist. Ist dies der Fall, ist das Div zu Ende gescrollt worden und ich kann den Button aktivieren.

Schaut es euch in der Anhängenden Solution mal an. Ich nehme auch gerne Verbesserungsvorschläge entgegen.

Anhang: DemoWeb

So long,

Steffen

Sunday, July 4th, 2010 .NET, JQuery No Comments

AjaxControlToolkit: Lokale Sprache #1

Folgendes Problem: Man will Komponenten aus dem AjaxControlToolkit benutzen. Die “Muttersprache” der Komponenten ist aber Englisch. Was also nun tun, wenn man sie in der Landessprache des Benutzers benutzen will?

Microsoft hat dafür schon eine Lösung implementiert.  Beim ScriptManger oder ToolkitScriptManager gibt es die Möglichkeit zwei Properties zu setzen, welche das AjaxControlToolkit dazu veranlassen, die lokale Sprache des Users zu nutzen.

<ToolScriptManager ID="myScriptManager" runat="server"
EnableScriptGlobalization="true"
EnableScriptLocalization="true" />

Zur Sprachermittlung werden vom AjaxControlToolkit die Werte folgender Systemvariablen genutzt:

Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentUICulture;

Damit werden nun alle Komponenten des AjaxControlToolkits in lokaler Sprache angezeigt.

Mit einer Ausnahme: Beim CalendarExtender wird “Today” immer noch auf Englisch dargestellt. Wie man diesen Mangel beheben kann verrate ich Euch demnächst.

So long,
Steffen

Friday, June 4th, 2010 .NET, Ajax Control Toolkit No Comments