Fler problem! :) Har en datagrid med en kolumn checkboxar med autopostback = true. Med "prerender" kan man ju som Gladh skrev här tidigare få upp ett javascript (confirm) när du klickar på en vanlig button. Är det möjligt att göra det på samma sätt med ett gäng checkboxar?
Lyckades inte fådet att fungera, problemet är kanske att onclick redan används av autopostback (gissning)?
Vi gjorde en annan lösning i flera steg istället. Skapade en osynlig textbox och en button (lyckades inte sätta ett value på en button därav tvungen att använda en textbox också). När man trycker på checkboxen så slänger man upp en confirm-ruta och beroende på vad man svarar fyller man textboxen med checkboxens true eller false samt i mitt fall SelectedNewsID... eller inget alls om man klickar på cancel. Sedan kör man onclick direkt på min button som i sin tur kör en ny funktion där jag använder textboxen för att kolla huruvida checkboxen skulle tryckts på eller inte.
<itemtemplate>
<asp:checkbox OnPreRender="Render"
Enabled='<%# IsPublisher() %>' Checked='<%# DataBinder.Eval(Container, "DataItem.Enabled") %>'
AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged"
Runat="server" ID="Checkbox1" NAME="Checkbox1"></asp:checkbox>
</itemtemplate>
...
<asp:TextBox id="HiddenTB" runat="server"></asp:TextBox>
<asp:Button id="ConfirmB" runat="server" Text="a"></asp:Button>
//när jag klickar på checkboxen
int SelectedNewsID = (int)PagesDG.DataKeys[((DataGridItem)((CheckBox)sender).Parent.Parent).ItemIndex];
Page.RegisterStartupScript("","<script>if(confirm('Är du säker på att du vill publicera detta dokument?')
{'document.getElementById('HiddenTB').value = '"+SelectedNewsID+","+((CheckBox)sender).Checked+"';
document.getElementById('ConfirmB').click()}
else{document.getElementById('HiddenTB').value = '';
document.getElementById('ConfirmB').click()}</script>");
Sist då den vanliga funktionen som körs av min button som startas från javascriptet där jag kör den egentliga koden som bockar av (eller inte) checkboxen beroende på vad jag har i min textbox. Omständigt är det och det kräver två (!) postbacks tyvärr, men det funkar. :)
Han ville väl ha själva confirmen på checkboxen innan den gör en postback. Om man då med din kod byter ut ImageButton mot CheckBox så dyker ett lite dumt problem upp. Attributet lägger sig inte som man tänker i "<input type="checkbox" onchange="return confirm('Delete node?');"...", utan istället i den span som omger inputen och resultaten blir inte så lyckat.
Tycker ändå att det måste finnas något smidigare än den lösning han har nu.
Testade lite och följande fungerar för mig med den ovanstående koden i ItemDataBound. Fast har problem med att postback inte körs vid ett OK i confirm. Detta beror på att om man lägger return innan postback anropet kommer den ignorera postbackkoden.