我设置了一个”删除“按钮和一列checkbox,当没有选中checkbox而点击“删除”时,想让它显示“请选择要删除的项”,要是选中了“删除”,则提示“确实要删除吗”,可是我试了很多次都无法实现,希望大家帮帮忙,帮我解决一下!
我是这样写的:
Dim Script As String
    If IsChecked = "True" Then(这个是判断checkbox是否被选中)
       Script = "<Script Language='JavaScript'>"
       Script += "if(confirm('确实要删除吗?')))){return true;}else{return false;};" & "<"
       Script += "/Script>"
       Response.Write (Script)
     Else
       Script = "<Script Language='JavaScript'>"
       Script += "window.alert('请选择要删除的项!'),"   & "window.location='EmployeeInfor.aspx'" & "<"
           Script += "/Script>"
           Response.Write (Script)
        End If
可是“确实要删除吗”这个提示框根本就显示不出来,无论是选中checkbox与否都显示“请选择要删除的项”,这是怎么回事呀??请大家帮忙解决一下,拜托了!!

解决方案 »

  1.   

    Script += "/Script>"
    改为Script += "</Script>"
      

  2.   

    ischecked 什么类型的
    如果是bool的直接写ischecked=true
      

  3.   

    你的代码写的真是经典,当然不会正确执行了。
    看看ischecked是什么类型的值
      

  4.   

    Page_Load:
    Button1.Attributes.Add("onclick","if(!document.all['CheckBox1'].checked){alert('请选择要删除的项');return false}else{return confirm('确实要删除吗?');}")
      

  5.   

    对呀,你的IsChecked 这个是什么类型的,如果是CheckBox的名字的话,应该这样写
    IsChecked.Checked = "True"
      

  6.   

    If IsChecked = "True" Then
    Button1.Attributes.Add("onclick","javascript:return confirm('确实要删除吗?');")
    End If
      

  7.   

    用 Eddie005(暴走005) 的代码
    顺便说一下,你的代码太经典了……
      

  8.   

    看样子你的button是在这个datagrid之外喽,如果页面仅这些datagrid里有checkbox的话,可以看一下下面的代码
    <script language="javascript">
    function myClick()
    {
    var inputs=document.getElementsByTagName("INPUT");
    var ischecked=false;
    for (var i=0; i < inputs.length; i++)
    {
    if (inputs[i].type=="checkbox" && inputs[i].checked)
    {
    ischecked=true;
    }
    }
    if(ischecked)
    confirm("are you really want to delete them!");
    else alert("please select first!");
    }
    </script>
    然后在onload里给button注册事件,如下:
    this.Button1.Attributes.Add("onclick","myClick();");
      

  9.   

    Eddie005(暴走005) 的代码估计是不可用的,假设这些checkbox是在一个datagrid中,则其clientid必不是checkbox1,如果这么写必定是错误的;假设不是datagrid或datalist里,则这些checkbox必不可能都是同一名字checkbox1,所以这么写仍然是错误的。
      

  10.   

    你的代码写的无敌了,太麻烦了用confirm不需要判断,因为这又不是ASP
    直接return confirm ,点确定往下执行,不点则都不做
    控件名.attribute.add("onclick","return confirm('');");
    就可以了
      

  11.   

    但实际用我上面写的代码确实可以达到你想要看到的效果,但实际上的处理效果却并不那么令人满意,至少我这边是这样的。因为不论如何,只要你点了button,它总会提交,而不问你选择了什么,不知道你会不会这样。如何才能避免这样呢。我试了一下,下面的方法可以,可以参考一下噢!
    1.设原先的button1的width和height均为1,并取消在on_load中对其onclick的属性注册,
    2.添加一个html控件button2,注意这里是html控件,而不是服务端控件。并编辑其html代码,在其属性上添加 onclick="myClick();",
    3.这里我们再把原先的myClick方法修改一下,如下:
    <script language="javascript">
    function myClick()
    {
    var inputs=document.getElementsByTagName("INPUT");
    var ischecked=false;
    for (var i=0; i < inputs.length; i++)
    {
    if (inputs[i].type=="checkbox" && inputs[i].checked)
    {
    ischecked=true;
    break;
    }
    }
    if(ischecked)
    {
    if(confirm("are you really want to delete them!"))
    document.getElementById('<%=Button1.ClientID%>').click();
    }
    else alert("please select first!");
    }
    </script>呵呵,全部代码就如上所述了,因为本人javascript水平有限,所以写的不是太完善,还请各位高手指点一下,呵呵
      

  12.   

    TO: yichuan1982(土豆,还是煮火锅最好吃) ,哥们,看清楚,人家不只要confirm,人家是根据情况进行判断的。
      

  13.   

    暴走(005):你的代码我试了,也不行呀!我是用VB写的代码,请问用VB代码怎么写,我是初学者,请多指教!
    控件名.attribute.add("onclick","return confirm('');");这种办法我也试过了
    delbutton.attribute.add("onclick","return confirm('确实要删除吗?');");只有写在page_load里面才管用,而且不管你是否选中checkbox,点击删除按钮都会显示“确实要删除吗”的框,我只想当点击了删除按钮后才出现,请大家在帮一下忙,谢了!
      

  14.   

    TO: qlike_hong() 晕了,我写的我试验过了,绝对管用,唉,真不理解
      

  15.   

    龙双公子,谢谢你的帮忙,我也相信可用,可是我所有的代码都是用language="VB"写的,我不知道怎么把你的代码加进去,不能加进去直接用吧?我刚学,所以不是很了解,望指教!
      

  16.   

    我写的这一段是javascript,你放在*.aspx文件里的,而不是*.aspx.cs文件里,这是客户端脚本,明白了吗?
      

  17.   

    To:龙双公子 
    我的代码都写在
    <Script Language="VB" Runat="Server">
    我的代码
    </Script>后保存为*.aspx,而在同一页面,不能使用两种语言吧。
    如<Script Language="javascript" Runat="Server">
    </Script>
    在同一页面中又有<Script Language="VB" Runat="Server">
    </Script>在asp.net中是不允许的吧!
    或者说<Script Language="VB" Runat="Server">
    中间夹有<Script Language="javascript" Runat="Server">
    </Script></Script>也是不行的吧!我想知道<Script Language="javascript" Runat="Server">
    </Script>
    中的代码怎么用在<Script Language="VB" Runat="Server">
    </Script>中这是我的愚见,请指教!
      

  18.   

    Dim Script As String
        If IsChecked = "True" Then(这个是判断checkbox是否被选中)
           Script = "<Script Language='JavaScript'>"
           Script += "return confirm('确实要删除吗?') false;};" & "<"
           Script += "/Script>"
           Response.Write (Script)
         Else
           Script = "<Script Language='JavaScript'>"
           Script += "window.alert('请选择要删除的项!'),"   & "window.location='EmployeeInfor.aspx'" & "<"
               Script += "/Script>"
               Response.Write (Script)
            End If
      

  19.   

    我写的那一段直接放在.aspx文件中head标记间,不需要runat=server属性啊
      

  20.   

    可以把 tavor(龙双公子) 的代码稍加整理的嘛,晕死了。vb.net里面应该也有Attribute属性的吧,你直接Button1.Attribute.Add("OnClick","myClick()")这样总会的吧。:)
      

  21.   

    没办法,那我还是自己写一段VB.NET的示例代码给你看看吧
    Webform1.aspx
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="TestVB.WebForm1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    <script language="javascript">
    function myClick()
    {
    var inputs=document.getElementsByTagName("INPUT");
    var ischecked=false;
    for (var i=0; i < inputs.length; i++)
    {
    if (inputs[i].type=="checkbox" && inputs[i].checked)
    {
    ischecked=true;
    break;
    }
    }
    if(ischecked)
    {
    if(confirm("are you really want to delete them!"))
    document.getElementById('<%=Button1.ClientID%>').click();
    }
    else alert("please select first!");
    }
    </script>
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <asp:button id="Button1" style="Z-INDEX: 102; LEFT: 432px; POSITION: absolute; TOP: 32px" runat="server"
    Height="1px" Width="1px" Text="Button1"></asp:button>
    <INPUT style="Z-INDEX: 105; LEFT: 488px; WIDTH: 88px; POSITION: absolute; TOP: 24px; HEIGHT: 24px"
    type="button" value="Button" onclick="myClick();">
    <asp:datagrid id="DataGrid1" style="Z-INDEX: 103; LEFT: 208px; POSITION: absolute; TOP: 72px"
    runat="server" Height="88px" Width="553px">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <FONT face="宋体">
    <asp:CheckBox id="CheckBox1" runat="server" Text="check"></asp:CheckBox></FONT>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:datagrid>
    </form>
    </body>
    </HTML>
    Webform1.aspx.vbPublic Class WebForm1
        Inherits System.Web.UI.Page#Region " Web 窗体设计器生成的代码 "    '该调用是 Web 窗体设计器所必需的。
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()    End Sub
        Public p = 10
        Protected WithEvents Button1 As System.Web.UI.WebControls.Button
        Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid    '注意: 以下占位符声明是 Web 窗体设计器所必需的。
        '不要删除或移动它。
        Private designerPlaceholderDeclaration As System.Object    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
            '不要使用代码编辑器修改它。
            InitializeComponent()
        End Sub#End Region    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            If (Not Page.IsPostBack) Then            Dim sc As System.Data.SqlClient.SqlConnection
                sc = New System.Data.SqlClient.SqlConnection("server=localhost;database=pubs;uid=sa;pwd=58801353;")
                Dim sda As System.Data.SqlClient.SqlDataAdapter
                sda = New System.Data.SqlClient.SqlDataAdapter("select * from sales", sc)
                Dim ds As System.Data.DataSet
                ds = New DataSet
                sda.Fill(ds, "authors")
                DataGrid1.DataSource = ds.Tables(0).DefaultView
                ' DataGrid1.DataKeyField = "you should set your keyfield for delete"
                DataGrid1.DataBind()
                sc.Close()        End If    End Sub    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Response.Write("Button1 clicked,you can write some delete code here")    End Sub
    End Class
    好了,上面的代码就可以完成你的要求了,呵呵,不过我VB的水平有限,只能写到这个程度了
    不过,重要的不是代码如何写,而是思路是怎样的,你最好还是好好看看 我前面写的思路。GOOD LUCK
      

  22.   

    下面的代码可以实现,你的问题我遇到过,就是下面这样解决的
    前台代码<script language=javascript>
    <!--
    function Check()
    {
    var count;
    var i;
    var flag=0;
    count=parseInt(document.all.item("RecordCount").value);(得到checkbox的数目)
                                        (判断checkbox是否选中)
    for (i=2;i<=parseInt(count+1);i++)
    {
    if (eval(document.all.item("mydatagrid__ctl" +i+ "_Chx")).checked==true)<checkbox的ID是组合生成的,源文件可以看到>
    {

    flag=1;
    break;
    }
    }
    if (flag==0)
    {
    alert("请先选择单据!");
    return (false);
    }
    else
    {
    if (!confirm("你确定提交吗?"))
    {
    return (false);
    }
    else
    {
    return (true);
    }
    }

    }

    //-->
    </script>
      

  23.   

    Page_Load:
    Button1.Attributes.Add("onclick","if(!document.all['CheckBox1'].checked){alert('请选择要删除的项');return false}else{return confirm('确实要删除吗?');}")
      

  24.   

    to 双龙公子:我用你的方法把问题解决了,谢谢你!问题虽然解决了,可是还有不是很明白的地方,如果你不介意的话可不可以和我联系一下,我的email:[email protected],帮人帮到底啦!