GridView删除确认问题,OnClientClick="return confirm('确认要删除此行信息吗?')" ,点取消时候根本不行啊!![顶者有分]

时间:2020-12-28 22:15:15
             <ItemTemplate>
                    <asp:LinkButton id="LinkButton1" runat="server" Text="报修" CausesValidation="false" CommandArgument='<%# Eval("EquipmentID") %>' CommandName="" OnClick="LinkButton1Click" OnClientClick="return confirm('确认要删除此行信息吗?')"></asp:LinkButton>
            </ItemTemplate>


我看到网上大部分的回复都是添加  OnClientClick="return confirm('确认要删除此行信息吗?')"

但我在所弹出对话框中点取消,却依然执行了 LinkButton1_Click  里面的事件呀!

请教下,我是不是还有什么地方没设置正确????

21 个解决方案

#1


查看一下html代码
很有可能把这两个js代码分配导href和onclick属性中,从而点击一下两个事件都触发了

#2


回 changke18:

HTML代码就在一楼呀,不存在href设置,在LinkButton1_Click 事件内,也没有任何JS语言

#3


just try this:OnClientClick= "if(!confirm( '您确认删除该记录吗? '))   return; "

#4


just try this: OnClientClick= "if(!confirm( '您确认删除该记录吗? '))   return; "

#5


回 changke18:

HTML代码就在一楼呀,不存在href设置,在LinkButton1_Click 事件内,也没有任何JS语言

#6



js = "javascript:if(confirm('是否确认删除!')==true) Page_ClientValidate();else return false;";       //加入判断对话框
this.btnDel.Attributes.Add("onclick", js);


这样,我之前也出现过这个问题,后来上网查了下,要这样子用

#7


你要设置一个flag,进行判断,因为你的代码里面没有一个进行控制的变量。所以无论如何都会进入的。

#8


照理说不应该出现这种情况。

另外建议不要这么处理GridView里的LinkButton事件。

给LinkButton的CommandName起个名,如CommandName="MyCmd",然后在GridView.RowCommand事件处理代码里
if(e.CommandName == "MyCmd")
{
  int id = Convert.ToInt32(e.CommandArgument);
  // ...
}

#9


楼上正解,同时要删除onclick事件

#10


引用 8 楼 namhyuk 的回复:
照理说不应该出现这种情况。 

另外建议不要这么处理GridView里的LinkButton事件。 

给LinkButton的CommandName起个名,如CommandName="MyCmd",然后在GridView.RowCommand事件处理代码里 
if(e.CommandName == "MyCmd") 

  int id = Convert.ToInt32(e.CommandArgument); 
  // ... 
}

#11





                         楼上 的 已经 解决问题了````

#12


还是给命令添加参数才是正确的途径

否则会有未知的意外发生的

#13


不好意思,昨天出差去了,刚刚回来,没有及时回复大家,非常抱歉!!

谢谢大家的回复,我已经分别按照 namhyuk 和lrcasd 两位朋友的方法做过,但运行后,当我点击”取消“时,依旧会执行下面的命令呀??

下面是我的HTML和C#源码,劳烦大家看看有什么问题呢?

            <asp:GridView id="GridView1" runat="server" GridLines="Horizontal" CellPadding="3" BorderWidth="1px" BorderStyle="None" BorderColor="#E7E7FF" BackColor="White" AutoGenerateColumns="False" nRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand">

                <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                    <asp:LinkButton id="LinkButton1" runat="server" Text="报修" CausesValidation="false" CommandArgument='<%# Eval("EquipmentID") %>' CommandName="cmdFaultReport" OnClientClick="javascript:return confirm('确认要报修该设备吗?')"></asp:LinkButton>
                    </ItemTemplate>
                    <ItemStyle HorizontalAlign="center" Width="50px"></ItemStyle>
                </asp:TemplateField>



    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmdFaultReport")
        {
            Hashtable ht = new Hashtable();
            ht.Add("EquipmentState", "2");

            string where = " where EquipmentID=";
            where += "'" + e.CommandArgument.ToString() + "'";

            TabEquipmentFixed.Update(ht, where);
            //
            BindData();
        }
    }

#14


好郁闷啊!

自己顶顶,期待高人的出现

#15


你代码没错。
我的意思是你把生成后的html源代码贴出来,
帮你分析一下,看看是什么原因导致的。

生成的超级连接,正常情况是href负责提交,
提交前先判断onclick是否返回真,如果真就提交,假就不提交

#16


引用 15 楼 changke18 的回复:
你代码没错。 
我的意思是你把生成后的html源代码贴出来, 
帮你分析一下,看看是什么原因导致的。 

生成的超级连接,正常情况是href负责提交, 
提交前先判断onclick是否返回真,如果真就提交,假就不提交 


请问生成后的html源代码的源代码怎么贴出来呢??

#17


我也遇到了这样的问题,

但把执行事件放在JAVASCRIPT里面就能够顺利执行,如果不放在里面,点取消也执行下面的事件。。。

#18


引用 17 楼 cashfly 的回复:
我也遇到了这样的问题, 

但把执行事件放在JAVASCRIPT里面就能够顺利执行,如果不放在里面,点取消也执行下面的事件。。。


请问朋友,如何把执行事件放在JAVASCRIPT里面呢??
我刚学VS,对JAVA也不太懂,麻烦多指教好吗?

#19


用AJAX 加个ConfirmButtonExtender 设置下就行啦

#20


引用 19 楼 kklldog 的回复:
用AJAX 加个ConfirmButtonExtender 设置下就行啦


不好意思,我初学VS,能讲得详细点吗?

#21


郁闷,原来是自己机子的问题,把系统放在别人机子上一切正常!
结贴了,谢谢大家的帮助!

#1


查看一下html代码
很有可能把这两个js代码分配导href和onclick属性中,从而点击一下两个事件都触发了

#2


回 changke18:

HTML代码就在一楼呀,不存在href设置,在LinkButton1_Click 事件内,也没有任何JS语言

#3


just try this:OnClientClick= "if(!confirm( '您确认删除该记录吗? '))   return; "

#4


just try this: OnClientClick= "if(!confirm( '您确认删除该记录吗? '))   return; "

#5


回 changke18:

HTML代码就在一楼呀,不存在href设置,在LinkButton1_Click 事件内,也没有任何JS语言

#6



js = "javascript:if(confirm('是否确认删除!')==true) Page_ClientValidate();else return false;";       //加入判断对话框
this.btnDel.Attributes.Add("onclick", js);


这样,我之前也出现过这个问题,后来上网查了下,要这样子用

#7


你要设置一个flag,进行判断,因为你的代码里面没有一个进行控制的变量。所以无论如何都会进入的。

#8


照理说不应该出现这种情况。

另外建议不要这么处理GridView里的LinkButton事件。

给LinkButton的CommandName起个名,如CommandName="MyCmd",然后在GridView.RowCommand事件处理代码里
if(e.CommandName == "MyCmd")
{
  int id = Convert.ToInt32(e.CommandArgument);
  // ...
}

#9


楼上正解,同时要删除onclick事件

#10


引用 8 楼 namhyuk 的回复:
照理说不应该出现这种情况。 

另外建议不要这么处理GridView里的LinkButton事件。 

给LinkButton的CommandName起个名,如CommandName="MyCmd",然后在GridView.RowCommand事件处理代码里 
if(e.CommandName == "MyCmd") 

  int id = Convert.ToInt32(e.CommandArgument); 
  // ... 
}

#11





                         楼上 的 已经 解决问题了````

#12


还是给命令添加参数才是正确的途径

否则会有未知的意外发生的

#13


不好意思,昨天出差去了,刚刚回来,没有及时回复大家,非常抱歉!!

谢谢大家的回复,我已经分别按照 namhyuk 和lrcasd 两位朋友的方法做过,但运行后,当我点击”取消“时,依旧会执行下面的命令呀??

下面是我的HTML和C#源码,劳烦大家看看有什么问题呢?

            <asp:GridView id="GridView1" runat="server" GridLines="Horizontal" CellPadding="3" BorderWidth="1px" BorderStyle="None" BorderColor="#E7E7FF" BackColor="White" AutoGenerateColumns="False" nRowDataBound="GridView1_RowDataBound" OnRowCommand="GridView1_RowCommand">

                <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                    <asp:LinkButton id="LinkButton1" runat="server" Text="报修" CausesValidation="false" CommandArgument='<%# Eval("EquipmentID") %>' CommandName="cmdFaultReport" OnClientClick="javascript:return confirm('确认要报修该设备吗?')"></asp:LinkButton>
                    </ItemTemplate>
                    <ItemStyle HorizontalAlign="center" Width="50px"></ItemStyle>
                </asp:TemplateField>



    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "cmdFaultReport")
        {
            Hashtable ht = new Hashtable();
            ht.Add("EquipmentState", "2");

            string where = " where EquipmentID=";
            where += "'" + e.CommandArgument.ToString() + "'";

            TabEquipmentFixed.Update(ht, where);
            //
            BindData();
        }
    }

#14


好郁闷啊!

自己顶顶,期待高人的出现

#15


你代码没错。
我的意思是你把生成后的html源代码贴出来,
帮你分析一下,看看是什么原因导致的。

生成的超级连接,正常情况是href负责提交,
提交前先判断onclick是否返回真,如果真就提交,假就不提交

#16


引用 15 楼 changke18 的回复:
你代码没错。 
我的意思是你把生成后的html源代码贴出来, 
帮你分析一下,看看是什么原因导致的。 

生成的超级连接,正常情况是href负责提交, 
提交前先判断onclick是否返回真,如果真就提交,假就不提交 


请问生成后的html源代码的源代码怎么贴出来呢??

#17


我也遇到了这样的问题,

但把执行事件放在JAVASCRIPT里面就能够顺利执行,如果不放在里面,点取消也执行下面的事件。。。

#18


引用 17 楼 cashfly 的回复:
我也遇到了这样的问题, 

但把执行事件放在JAVASCRIPT里面就能够顺利执行,如果不放在里面,点取消也执行下面的事件。。。


请问朋友,如何把执行事件放在JAVASCRIPT里面呢??
我刚学VS,对JAVA也不太懂,麻烦多指教好吗?

#19


用AJAX 加个ConfirmButtonExtender 设置下就行啦

#20


引用 19 楼 kklldog 的回复:
用AJAX 加个ConfirmButtonExtender 设置下就行啦


不好意思,我初学VS,能讲得详细点吗?

#21


郁闷,原来是自己机子的问题,把系统放在别人机子上一切正常!
结贴了,谢谢大家的帮助!