I use checkbox control in gridview i want to show confirm before checkboxchanged event.
Confirm box is asking question but not postback it, doing nothing...
// CS
TemplateField field = new TemplateField(){
HeaderText = "AKTIF",
ItemTemplate = new AddTemplateToGridView("AKTIF")
};
field.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
field.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
field.ItemStyle.Width = Unit.Pixel(40);
newXGrid.Columns.Add(field);
// ITEMPLATE
public class AddTemplateToGridView : ITemplate
{
String columnName;
public AddTemplateToGridView(String colname)
{
columnName = colname;
}
void ITemplate.InstantiateIn(System.Web.UI.Control container)
{
if (columnName == "AKTIF")
{
CheckBox chk = new CheckBox() { ID="chkAktif", AutoPostBack=true };
chk.Attributes.Add("onclick","return confirm('Are you sure ?')");
chk.CheckedChanged += new EventHandler(l_CheckedChanged);
container.Controls.Add(chk);
}
}
void l_CheckedChanged(object sender, EventArgs e)
{
...
}
}
// My checkbox on page
<input id="ctl00_MainContent_ctl11_ctl02_chkAktif" type="checkbox" name="ctl00$MainContent$ctl11$ctl02$chkAktif" onclick="return confirm('Are you sure ?');setTimeout('__doPostBack(\'ctl00$MainContent$ctl11$ctl02$chkAktif\',\'\')', 0)">
I use checkbox control in gridview i want to show confirm before checkboxchanged event.
Confirm box is asking question but not postback it, doing nothing...
// CS
TemplateField field = new TemplateField(){
HeaderText = "AKTIF",
ItemTemplate = new AddTemplateToGridView("AKTIF")
};
field.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
field.ItemStyle.HorizontalAlign = HorizontalAlign.Center;
field.ItemStyle.Width = Unit.Pixel(40);
newXGrid.Columns.Add(field);
// ITEMPLATE
public class AddTemplateToGridView : ITemplate
{
String columnName;
public AddTemplateToGridView(String colname)
{
columnName = colname;
}
void ITemplate.InstantiateIn(System.Web.UI.Control container)
{
if (columnName == "AKTIF")
{
CheckBox chk = new CheckBox() { ID="chkAktif", AutoPostBack=true };
chk.Attributes.Add("onclick","return confirm('Are you sure ?')");
chk.CheckedChanged += new EventHandler(l_CheckedChanged);
container.Controls.Add(chk);
}
}
void l_CheckedChanged(object sender, EventArgs e)
{
...
}
}
// My checkbox on page
<input id="ctl00_MainContent_ctl11_ctl02_chkAktif" type="checkbox" name="ctl00$MainContent$ctl11$ctl02$chkAktif" onclick="return confirm('Are you sure ?');setTimeout('__doPostBack(\'ctl00$MainContent$ctl11$ctl02$chkAktif\',\'\')', 0)">
Share
Improve this question
edited Jul 4, 2018 at 7:12
Mennan
asked Mar 14, 2012 at 14:38
MennanMennan
4,49713 gold badges56 silver badges89 bronze badges
2 Answers
Reset to default 8Change this:
chk.Attributes.Add("onclick","return confirm('Are you sure ?')");
to this:
chk.Attributes.Add("onclick","if (!confirm('Are you sure ?')) return false;");
Set AutoPostBack="true"
for the Checkbox to trigger the postback on click.
You are preventing javascript to execute setTimeout()
by using return with confirm dialog.
Try this:
if(confirm('Are you sure?'))
setTimeout('__doPostBack(\'ctl00$MainContent$ctl11$ctl02$chkAktif\',\'\')', 0);
else
return false;