Po čase jsem stál opět před úkolem udělat součet řádků v repeteru(sum hodnotu).
Aby to nebylo tak jednoduché tak to samozřemě má umožnit i přepočet na klientské straně, tedy v prohlížeči.

Jako nejjednodušší mě přijde projít všechny TextBoxy, které může uživatel změnit, související s výpočtem a sum hodnotu přepočítat.
Tady ale narážím na problém co s ID jednotlivých TextBoxů, neboli jak ty txb projít a hodnotu zjistit. V minuslosti jsem to vyřešil tak že jsem si vzal vygenerované ID z výsledného html a čísla řádků jsem si přepsal přímo v JS:

ctl00_ContentPlaceHolder1_DetailForm_ctl01_tbCelkem změním na

ctl00_ContentPlaceHolder1_DetailForm_ctl02_tbCelkem

Řešení nic moc ale funkční. Při přechodu z FW 1.1 na 2.0 jsem měl např. problém s použitými oddělovači, které jsem měl definované natvrdo, místo abych si je zjistil pomocí vlastnosti ClientIDSeparator, nemluvě o tom že toto řešení nelze použít (bez dalších úprav) pro vlastní user control (ascx). Celý javascript, který jsem následně vkládl do stránky jsem si tvořil do StringBuilderu a neumožnuje tedy ani úpravu bez opětovné kompilace.

Tentokrát jsem se tedy vydal jinou cestou. Cesta se obešla bez StringBuilderu, js je tedy přímo v html stránce a ID si neskládám.
V codebehind mám definovanou vlastnost typu List<string> do které si při bindování repeateru ID jednotlivých TextBoxtů ukládám.

Vlastní JS pak využívá vloženého kódu var repId = <%= RepRowId %>; , který je nahrazen při renderování aspx jednotlivými ID

cs.

 private List<string> _repRowsId = new List<string>();

        public string RepRowId

        {

            get

            {

                JavaScriptSerializer jss = new JavaScriptSerializer();

                string idItems = jss.Serialize(_repRowsId);

                return idItems;

            }

        }

Jak již asi tušíte celé kouzlo spočívá ve využití serializace do JSONu, který se dá projít pomocí JS.
Výše uvedený kód mě vrátí asi takovýto objekt:
var repId = ["ctl00_ContentPlaceHolder1_DetailForm_ctl01_tbCelkem","ctl00_ContentPlaceHolder1_DetailForm_ctl02_tbCelkem"];

js.

for(i=0; i < repId.length; i++)

            {

                var tVal = new Number(jshelp.number.getnum($get(repIdIdea).value));

                newSum += tVal;   

            }