2013-05-03 108 views
0

我有一个网格显示来自数据库的数据,我有一个自定义列在左边的复选框,我选择要删除的记录,我有一个下拉列表,这将触发在服务器端的事件删除记录,在我删除那些记录之前,我想要显示一个确认对话框,如“你确定吗?确定并取消”,该怎么做?任何想法?如何从下拉列表中显示确认对话框?

我这样做:

if(ddlAction.SelectedValue == "Delete") 
{ 
    string id = string.Empty; 
    int i = 0; 
    List<int> idx = new List<int>(); 

    foreach (GridViewRow rowitem in gvDept.Rows) 
    { 
     CheckBox itemchk = (CheckBox)rowitem.FindControl("cbSelectOne"); 

     if (itemchk != null & itemchk.Checked) 
     { 
      id += rowitem.Cells[3].Text.ToString() + ','; 
       idx.Add(i); 
     } 

      i = i + 1; 
     } 

     id = id.Trim(",".ToCharArray()); 
     List<string> objRemoveKeys = id.Split(',').ToList(); 

     if (objRemoveKeys.Count > 0) 
     {  
     ddlAction.Attributes.Add("OnChange", "javascript:return confirmDeletion('Are you sure you would like to remove the selected items?');"); // this part not working. 

     AirAsiaLinqDataContext LinqDataCtx = new AirAsiaLinqDataContext(); 

     var record = from a in LinqDataCtx.departements 
         where objRemoveKeys.Contains(a.departementcode) 
         select a; 

     LinqDataCtx.departements.DeleteAllOnSubmit(record); 
     LinqDataCtx.SubmitChanges(); 


     for (int j = 0; j < idx.Count; j++) 
     { 
      gvDept.DeleteRow(idx[j]); 
     } 
    } 

    ddlAction.SelectedValue = ""; 

}

回答

0

这看起来像后台代码(C#)代码。对话发生在客户端。您可以使用jQuery(甚至香草JavaScript代码)做到这一点相对容易,或使用类似的Ajax控件工具包的ConfirmButton

http://www.asp.net/ajaxLibrary/AjaxControlToolkitSampleSite/ConfirmButton/ConfirmButton.aspx

在过去的过程中多一点的控制,你也可以给JuiceUI一展身手:http://juiceui.com/controls/dialog

+0

嗨蒂森,是的,它是我的C#代码的一部分,我认为我们可以添加一些客户端事件控制与controlname.attribute.add(“”) – NomNomNom 2013-05-03 05:57:44

+0

@ HendraLim这将在理论上的工作,但它的东西,需要是在原始页面加载完成。在回发中添加它是没有用的,因为这是所有服务器端处理。由于您没有包括整个方法,因此很难分辨您正在做什么。看起来像,因为你引用'SelectedValue',这是回发处理。 – 2013-05-03 06:11:58

+0

是的,这是一个回发处理,上面的所有代码都在一个下拉列表事件中,以及我认为你的建议是我拥有的最佳选择,非常感谢泰森。 – NomNomNom 2013-05-03 06:37:31

0

试试这个

ddlAction.Attributes.Add("onchange", "return confirm('Are you sure you would like to remove the selected items?');"); 
+0

我做到了,没有工作或者,顺便ddlAction是一个下拉列表控件,它是不是一个按钮。 – NomNomNom 2013-05-03 05:48:28

0

您不仅应该显示确认提醒,还要检查用户是否选择了某行。下面的代码完成了这两个。

javascript函数:

function checkIfSelected() { 
    if (yourGrid.GetSelectedRowCount() == 0) { 
     alert("You must select atleast one."); 
     return false; 
    } 
    else { 
     if (confirm("Are you sure you want to proceed?")) { // This is what you want 
     } 
     else { 
      return false; 
     } 
    } 
} 

您的下拉列表:

<asp:DropDownList ID="ddlAction" onChange="javascript:if(checkIfSelected() == false){return false};" AutoPostBack="true" runat="server" OnSelectedIndexChanged="yourID_SelectedIndexChanged"> 

+0

嗨tariq,我试过它在萤火虫控制台,因为我使用的是没有客户端实例名称的普通gridview,我不认为JavaScript会通过它的名称识别网格,并且无法调用GetSelectedRowCount方法以及。如果我们使用devexpress或其他外部组件的gridview,这可能会起作用。 – NomNomNom 2013-05-03 06:34:41

+0

是的,我知道,但你可以使用其他一些方法来检查是否有一行被选中,它在你的情况下需要的所有。但是您可以确实按照我已经完成的方式显示删除确认,即通过dropdownlist的onchange()事件 – tariq 2013-05-03 06:47:02

相关问题