我在转发器控件中有一个复选框.在更改它的位值时,它应该像您希望删除一样提示警报消息?如果选择是,则应触发onselectedchange服务器事件.
I have a checkbox in repeater control. on changing it's bit value, it should prompt the alert message like do u wish to delete? and if yes is selected, the onselectedchange server event should be fired.
现在.单击复选框后,我正在使用onclick事件触发提示,但无法触发服务器事件.
Right now. on clicking the checkbox i am using onclick event to fire the prompt but it is not able to fire the server event.
这是我的代码
<script language="javascript" type="text/javascript"> function CheckedChange() { if (confirm('Are you sure you want to delete?')) return true; else return false; } </script> <asp:Repeater ID="repQuestion" runat="server" onitemcommand="repQuestion_ItemCommand" onitemdatabound="repQuestion_ItemDataBound"> <ItemTemplate> <table width="100%" cellspacing="0" cellpadding="0"> <tr> <td> <asp:CheckBox onclick="return CheckedChange();" ID="delete" runat="server" Checked='<%#DataBinder.Eval(Container.DataItem, "IsDeleted")%>' OnCheckedChanged="chkdelete_Click" /> </td> </tr> </table> </ItemTemplate> </asp:Repeater> 推荐答案解决此代码段.
中继器.
<asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <table> <tr> <td><%# Eval("Index") %></td> <td> <asp:CheckBox ID="delete" runat="server" AutoPostBack="true" Checked='<%# Convert.ToBoolean(Eval("IsDeleted")) %>' Enabled='<%# !Convert.ToBoolean(Eval("IsDeleted")) %>' OnCheckedChanged="chkdelete_Click" onclick="javascript:return CheckedChange(this)"/> </td> </tr> </table> </ItemTemplate> </asp:Repeater>JavaScript
JavaScript
function CheckedChange(objCheckBox) { if (confirm('Are you sure you want to delete?')) { __doPostBack("'" + objCheckBox.id + "'", ''); return true; } else { objCheckBox.checked = false; return false; } }Page_Load事件
Page_Load Event
protected void Page_Load(object sender, EventArgs e) { try { if (!IsPostBack) { //bind gridview here DataTable dataTable = new DataTable { Columns = { "Index", { "IsDeleted", typeof(bool) } } }; bool temp = true; for (var i = 0; i < 6; i++) { dataTable.Rows.Add((i + 1).ToString(), temp); temp = !temp; } Repeater1.DataSource = dataTable; Repeater1.DataBind(); } } catch (Exception exception) { //Elmah.ErrorSignal.FromCurrentContext().Raise(exception); } }好吧,我个人不喜欢公开 __ doPostBack ,但这在这种情况下似乎是唯一的方法.
Well, I don't personally like exposing the __doPostBack but this seems to be the only way in this case.
在不相关的旁注中,如果要显示已删除的项目,最好将它们显示为禁用.
On an unrelated side note, if you are showing deleted items, its better to show them disabled.
更多推荐
复选框服务器/客户端事件
发布评论