5.54  How can I put up a confirmation question when the user tries to delete a row in the datagrid by clicking on the row header and pressing the Delete key? http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q889q

解决方案 »

  1.   

    给你代码(VB.NET):
     '执行删除
        Public Sub dg_Item(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
            If e.CommandName = "Delete" Then
                Dim del As Integer
                Dim dc As SqlConnection
                Dim cm As SqlCommand
                Dim da As SqlDataAdapter
                Dim ds As DataSet
                '获得任一行id值
                del = e.Item.Cells(0).Text
                dc = New SqlConnection(classconn.strconn)
                dc.Open()            '数据在企业时做物理删除
                If Request.Cookies("tx1").Value = "qy" Then
                    cm = New SqlCommand("delete from e_xmry where id=" & del, dc)
                End If
                '数据经申报确认后删除时只能添加标志
                If Request.Cookies("tx1").Value = "qr" Then
                    cm = New SqlCommand("update  e_xmry set e_xm_sbzt = '已删除' where id=" & del, dc)
                End If
                cm.ExecuteNonQuery()
                '重新绑定表格
                da = New SqlDataAdapter("select e_xmry.*,c_zcs.c_zcs_name,c_zw.c_zw_name from e_xmry,c_zcs,c_zw where  e_xmry.c_us_code='" & Request.Cookies("yhdm").Value & "' and e_xmry.c_zcs_id1 =c_zcs.c_zcs_id  and e_xmry.C_zw = c_zw.c_zw_id and e_xmry.e_xm_sbzt <> '已删除' and e_xmry.e_xm_id = '" & Request.Cookies("id").Value & "'", dc)
                ds = New DataSet()
                da.Fill(ds, "e_xmry")
                dg.DataSource = ds
               End If
        End Sub    '删除对话框
        Public Sub dg_Bound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
            If e.Item.ItemIndex > -1 Then
                Dim k As HyperLink = CType(e.Item.Cells(9).FindControl("DelBtn"), HyperLink)
                Dim x As String = e.Item.Cells(0).FindControl("DeleteRecord").UniqueID
                k.NavigateUrl = "javascript:doconfirm('你确认删除吗?','" & x & "','')"
                k.Text = "删除"
                xh1 = xh1 + 1
                e.Item.Cells(1).Text = xh1.ToString
            End If
        End Sub注意DATAGRID中要添加“删除”的按钮列(转为模板)(下面是HTML代码片段)
    **********************JSP代码***************************
    <script language="javascript">
    <!--
    function doconfirm(ask,arg1,arg2) {
    if(confirm(ask)) __doPostBack(arg1,arg2);
    }
    // -->
    </script>
    **********************************************************
    <asp:datagrid id="dg" runat="server" BorderStyle="Dashed" Font-Size="X-Small" Width="800px" Height="10px" BackColor="Transparent" BorderColor="Olive" OnItemDataBound="dg_Bound" OnItemCommand="dg_Item" PageSize="5" AllowPaging="True" AutoGenerateColumns="False">
    <SelectedItemStyle ForeColor="Blue"></SelectedItemStyle>
    <HeaderStyle Font-Size="X-Small" Font-Names="宋体" BackColor="SkyBlue"></HeaderStyle>
    <Columns>
    <asp:TemplateColumn HeaderText="删除">
    <HeaderStyle ForeColor="Black" Width="1cm"></HeaderStyle>
    <ItemStyle ForeColor="Red"></ItemStyle>
    <ItemTemplate>
    <asp:Hyperlink id="DelBtn" text="dele" Runat="server"></asp:Hyperlink>
    <asp:LinkButton id="DeleteRecord" runat="server" text="" CommandName="Delete" Visible="true"></asp:LinkButton>
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    <PagerStyle NextPageText="下一页" PrevPageText="上一页" ForeColor="Green" Position="Top"></PagerStyle>
    </asp:datagrid>
      

  2.   

    sorry,忘了说了
    我是在winForm下的
      

  3.   

    可是这样做的话,
    每做一次删除操作,就要刷新一次数据库,然后再从数据库里读出数据来填充DataGrid,
    如果记录很多的话,速度会很慢啊。
      

  4.   

    应该不会吧,你的表中记录很多吗?(超过10万条!!!)真是这样的话,可以有很多手段解决数据库读取的速度问题啊,比方说过程、索引啊等等,甚或将读取操作单独编写一个可重用组件....等等,不定非要从控件本身(DG)解决吧?也许是DG我本身用的也不是太好,但我多以为微软的东西(控件)在涉及某些超边界的情况下表现都不好,反正我是加以回避而从其他途径解决问题
      

  5.   

    Datagrid中的删除确认
    1、建立一个LinkButton的列模板
    <ItemTemplate>                                                        
            <asp:LinkButton  id="cmdDel"  runat="server"  Text="删除"  CommandName="Delete"  CausesValidation="false"></asp:LinkButton>
    </ItemTemplate>2、在DataGrid中的ItemCreated事件中加入如下代码LinkButton  lb;
    if(e.Item.ItemType==ListItemType.Item  ||  e.Item.ItemType==ListItemType.AlternatingItem)
    {
            lb=(LinkButton)e.Item.Cells[5].FindControl("cmdDel");
            lb.Attributes["onclick"]="javascript:return  confirm('确定删除该论题吗?');";

    其中的参数你自己改成你相应的。我就是这么做的,可以。