Kliknutí na buňku se musí řešit pomocí javascriptu, jinak to nejde. Odeslat stránku na server bez skriptu umí jen <input type="submit"... nebo <input type="image"..., tedy komponenty Button nebo ImageButton. Jakýkoliv jiný způsob (třeba i blbý LinkButton) už javascript vyžaduje, i když ho třeba nemusíte psát ručně. Ale interně se použije, to jen tak pro informaci. Záleží, co přesně chcete při kliknutí na buňku udělt, ale pokud to jde, řešte to pomocí javascriptu. Třeba opsání ID do labelu je s jQuery sranda na dva řádky. Dělat kvůli tomu postback na server je naprosto zbytečné a uživetele to bude jenom otravovat, přenese se víc dat atd. Pokud chcete dělat po kliknutí na buňku něco sofistikovanějšího, tak to bude trochu problém, ve zkratce se to dělá takhle (píšu z hlav,y třídy nebo rozhraní se možná jmenují trochu jinak): 1. Vytvoříte třídu, která dědí z TableCell a implementuje IPostBackEventHandler a INamingContainer. 2. Při renderování té buňky do atributu onclick vygenerujete javascript, dělá se to metodou GetPostBackEventReference, například v metodě AddAttributesToRender. 3. Do třídy přidáte public event EventHandler Click a protected virtual void OnClick(EventArgs e), která zkontroluje, jestli Click je null a když ne, tak zavolá Click(this, e). 4. V metodě, kterou předepisuje rozhraní IPostBackEventHandler, vyvoláte událost Click, kterou si do té třídy dáte taky spolu s metodou OnClick, která ji vyvolá. 5. Tabulku pak místo klasických TableCell naplníte instancemi třídy, kterou jste právě napsal, a přidáte obsluhy pro událost Click. Až se budete vztekat, proč to nefunguje, tak si zkontrolujte, že při každém postbacku tabulku vygenerujete už v události Load nebo dřív, a že je strom komponent vždycky naprosto stejný. Jinak to nebude fungovat.
|