使用确认警报 ASP.Net 单击 Gridview LinkBut​​ton 上的突出显示行

Posted

技术标签:

【中文标题】使用确认警报 ASP.Net 单击 Gridview LinkBut​​ton 上的突出显示行【英文标题】:Highlight Row on Gridview LinkButton Clicked with Confirmation Alert ASP.Net 【发布时间】:2016-07-11 18:05:46 【问题描述】:

我有删除按钮并确认警报工作正常。但我想在显示警报之前为所选行的背景色着色。它工作正常,并显示 BackColor 为灰色的 View 按钮,因为 View 按钮没有警报。但它没有显示删除按钮的背景颜色已更改,因为它首先发出警报,并且在是时,它会转到 RowCommand 事件。

如何更改删除消息的背景颜色?

<asp:TemplateField HeaderText="Option">
    <ItemTemplate>
        <asp:LinkButton ID="btnEdit" CommandName="editRecord" Width="14px" Height="14px" aria-label="Left Align"
            CommandArgument='<%# Eval("DeptID") + "," + Eval("DeptName")%>' CssClass="" runat="server">
            <span class="glyphicon glyphicon-pencil" style="vertical-align:top;"></span>
        </asp:LinkButton>

        <asp:LinkButton ID="btnDelete" CommandName="deleteRecord" Width="14px" Height="14px" 
            OnClientClick="javascript:return confirm('Are you sure you want to Delete highlighted row?');"
            CommandArgument='<%# Eval("DeptID") + "," + Eval("DeptName")%>' CssClass="" runat="server">
                <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
        </asp:LinkButton>
    </ItemTemplate>
    <ItemStyle CssClass="col-md-1 col-sm-1 col-xs-1 grid-label-text-align grid-height-10"></ItemStyle>
</asp:TemplateField>

--后面的代码

protected void grdDept_RowCommand(object sender, GridViewCommandEventArgs e)

    lblMessage.Visible = false;

    GridViewRow gvr = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer);
    int RowIndex = gvr.RowIndex;
    grdDept.Rows[RowIndex].BackColor = System.Drawing.Color.LightGray; 

    if (e.CommandName == "editRecord")
    
        string[] commandArgs = e.CommandArgument.ToString().Split(new char[]  ',' );
        string deptID = commandArgs[0];
        string deptName = commandArgs[1];

        hfDeptID.Value = deptID;
        txtDeptName.Text = deptName;
        //btnAdd.Text = "Update";
        panel1.Visible = true;
        lblMessage.Visible = false;
    
    else if (e.CommandName == "deleteRecord")
    
        string[] commandArgs = e.CommandArgument.ToString().Split(new char[]  ',' );
        string deptID = commandArgs[0];

        if (ChildRecordExist(int.Parse(deptID)) == false)
        
            DepartmentClass dept = new DepartmentClass();
            dept.DeptID = int.Parse(deptID);

            TransactionOptions options = new TransactionOptions();
            options.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted;
            options.Timeout = new TimeSpan(0, 15, 0);

            using (TransactionScope tran = new TransactionScope(TransactionScopeOption.Required, options))
            
                if (deptID != "")
                
                    if (dept.Delete() == true)
                    
                        tran.Complete();
                        panel1.Visible = false;
                        lblMessage.Visible = false;
                    
                
            
            LoadAllRecords("");
        
    

【问题讨论】:

不清楚您正在寻找什么。我假设您想在用户单击行时突出显示行,对吗? 感谢 Piyush 的回复,我想在用户按下删除按钮时突出显示行。并在按下删除按钮时,它会发出警报“您确定要删除突出显示的行吗?”如果用户按是,则删除记录,否则否。 好的,所以我认为根据您的代码,您只会得到警告框,而不是突出显示行,对吗? 是的,因为客户端的警报首先运行,如果我按是,那么它会转到 RowCommand 事件,我将背景色设置为灰色。 你能试试这个吗,codeproject.com/Articles/24475/… 【参考方案1】:

您必须为删除按钮设置一个类名,例如class="delete" 现在添加这个 jquery:

$('.delete').click(function()
    $('td').css('background-color', 'white') //change back all tds to their original background.
    $(this).closest('tr').css('background-color', 'red');
    return confirm('are you sure to delete?');
 );

并添加它可以更好地查找所选行:

tr.selectedborder-collapse: collapse;

【讨论】:

【参考方案2】:

使用onmousedown 事件突出显示要删除的行,然后使用onclick 事件进行实际删除。

【讨论】:

以上是关于使用确认警报 ASP.Net 单击 Gridview LinkBut​​ton 上的突出显示行的主要内容,如果未能解决你的问题,请参考以下文章

在按钮单击文本框值是空的使用 asp.net mvc 显示警报?

如何使用 c# 在 asp.net 中隐藏和显示警报

Javascript 警报在 asp.net 的更新面板中不起作用

使用asp.net mvc在按钮单击成功时查看包消息无法正常工作?

如何在尝试使用 Razor Pages 删除 ASP.NET Core 中的记录时显示确认消息

在 Asp.Net c# 中更新 gridview