使用jQuery从数据库中的表中删除重复的条目

本文关键字:删除 数据库 jQuery 使用 | 更新日期: 2023-09-27 18:29:08

所以我有一个新的需求,这对我来说很棘手,到目前为止我还无法解决。我正在使用网格视图来插入和更新数据。我的一个要求是,当用户手动添加新记录时,如果存在相同的"交易编号",则显示弹出窗口。此弹出窗口应显示已存在的记录。他们应该能够点击"使用"、"放弃"或"确定"三个按钮中的一个。"使用"按钮基本上会关闭弹出窗口并清除用户输入的文本框。"放弃"按钮必须删除现有记录,以便用户可以使用相同的交易编号插入新记录。原因是交易编号是发生的"交易"中最独特的编号。按照我们从旧应用程序导出到新应用程序的方式,会下载重复的应用程序,有时有些应用程序的信息比第一次导出时更多。这就是为什么我必须添加一个要求,让用户选择要保留的记录。我希望这对你们大家都有意义。我已经烘干了一些东西,但这是我目前的东西,我被卡住了。

Jquery脚本:

<script type="text/javascript">
    $(document).ready(function () {
        function showpopup() {
            $("#popup").dialog("open");
        }
        $("#popup").dialog({
            modal: true,
            width: 450,
            autoOpen: false,
            open: function (type, data) {
                $(this).parent().appendTo("form");
            }
        });
        $("#popup").each(function () {
            var popup = $(this);
            popup.parent().appendTo($("form:first"));
        });
    });
</script>

现在,脚本调用的分区有另一个网格视图来显示现有记录。。

<div class="popUpStyle" title="Duplicate Deal Found!" id="popup" style="display:none">
            <asp:GridView ID="gvDealTracking" runat="server" Width="200px" AutoGenerateColumns="False">
                <Columns>
                    <asp:TemplateField HeaderText="Stock #">
                        <ItemTemplate>
                            <asp:Label ID="lblDupStockNumber" runat="server" Text='<%# Bind("StockNumber") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Deal #">
                        <ItemTemplate>
                            <asp:Label ID="lblDupDealNumber" runat="server" Text='<%# Bind("FIMAST") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="DealDate">
                        <ItemTemplate>
                            <asp:Label ID="lblDupDealDate" runat="server" Text='<%# Bind("DealDate") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Buyer">
                        <ItemTemplate>
                            <asp:Label ID="lblDupBuyer" runat="server" Text='<%# Bind("Buyer") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="GrossProfit">
                        <ItemTemplate>
                            <asp:Label ID="lblDupGrossProfit" runat="server" Text='<%# Bind("GrossProfit") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="AmtFinanced">
                        <ItemTemplate>
                            <asp:Label ID="lblDupAmtFinanced" runat="server" Text='<%# Bind("AmtFinanced") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="BankName">
                        <ItemTemplate>
                            <asp:Label ID="lblDupBankName" runat="server" Text='<%# Bind("BankName") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
            <br />
            <asp:Button ID="btnUse" Text="Use" runat="server"></asp:Button>
            <asp:Button ID="btnDiscard" Text="Discard" runat="server" OnClick="btnDiscard_Click" style="display:none"></asp:Button>
            <asp:Label ID="lblMessagePop" runat="server"></asp:Label>
            <br />
        </div>

现在是我用来删除现有记录的代码。。

 protected void btnDiscard_Click(object sender, EventArgs e)
        {
            try
            {
                GridViewRow gvr = (GridViewRow)(sender as Control).Parent.Parent;
                string dealnumber = ((Label)gvr.FindControl("lblDupDealNumber")).Text.Trim();
                conn.Open();
                SqlCommand cmdDeleteDup = new SqlCommand("DELETE * FROM Vehicle WHERE FIMAST = @FIMAST", conn);
                cmdDeleteDup.Parameters.AddWithValue("@FIMAST", dealnumber);
                cmdDeleteDup.ExecuteNonQuery();
                conn.Close();
            }
            catch (Exception ex)
            {
                lblMessagePop.Text = ex.ToString();
            }
        }

按钮点击没有启动,我现在知道如何让它工作了。我尝试了一些不同的方法,但结果相同。我正在使用一个阅读器来检查记录是否存在,如果它确实有行,我会显示这个弹出窗口。它显示得很完美,只是我的按钮没有任何作用。如果这不是正确的方式,请告诉我。非常感谢您的指导!

这就是我在c#中调用弹出窗口的方式。这有一个阅读器,它会检查行是否存在,如果存在,它会在弹出窗口中显示现有记录。我使用数据适配器来完成此操作。然后我使用Page.ClientScript…打开弹出窗口并显示结果。

SqlDataReader rdr = null;
                SqlCommand cmdCheckExisting = new SqlCommand("SELECT StockNumber, DealDate, Buyer FROM Vehicle WHERE FIMAST = '" + DealNumber + "';", conn);
                rdr = cmdCheckExisting.ExecuteReader();
                if (rdr.HasRows)
                {
                    rdr.Close();
                    DataTable dt = new DataTable();
                    SqlDataAdapter cmdReturnExisting = new SqlDataAdapter("SELECT StockNumber, FIMAST, DealDate, Buyer, GrossProfit, AmtFinanced, BankName FROM Vehicle WHERE FIMAST = '" + DealNumber + "';", conn);
                    cmdReturnExisting.Fill(dt);
                    gvDealTracking.DataSource = dt;
                    gvDealTracking.DataBind();
                    conn.Close();
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "showpopup();", true);
                }

使用jQuery从数据库中的表中删除重复的条目

编辑:尝试从div中删除"style='display:none'",并在对话框中添加"autoOpen:false"。那么"showpopup()"函数唯一需要做的就是调用"$("#popup").dialog('open');"
$(document).ready(function() {
    $("#popup").dialog({
        modal: true,
        width: 450,
        autoOpen: false,
        open: function(type,data) {
            $(this).parent().appendTo("form");
        }
    });
    $("#popup").each(function() { 
        var popup = $(this); 
        popup.parent().appendTo($("form:first")); 
    });
    function showpopup() {
        $("#popup").dialog("open");
    }
 });

我找到了一个解决方案。我只是把按钮改成了链接按钮。出于某种原因,如果将asp链接按钮放置在网格视图的外部或内部,一切都会完美运行。这是带有网格视图的弹出窗口。

    <script type="text/javascript">
                function showpopup() {
                    $("#popup").dialog({
                        modal: true,
                        width: 590,
                        buttons: {
                            Ok: function () {
                                $(this).dialog("close");
                            }
                        }
                    });
                };
            </script>
             <div class="popUpStyle" title="Duplicate Deal Found!" id="popup" style="display:none">
                <asp:GridView ID="gvDealTracking" runat="server" Width="200px" AutoGenerateColumns="False">
                    <Columns>
                        <asp:TemplateField HeaderText="Stock #" HeaderStyle-Wrap="false">
                            <ItemTemplate>
                                <asp:Label ID="lblDupStockNumber" runat="server" Text='<%# Bind("StockNumber") %>'></asp:Label>
                            </ItemTemplate>
                            <HeaderStyle Wrap="False" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Dealership" SortExpression="Dealership">
                            <EditItemTemplate>
                                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Dealership") %>'></asp:TextBox>
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:Label ID="Label1" runat="server" Text='<%# Bind("Dealership") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Deal #" HeaderStyle-Wrap="false">
                            <ItemTemplate>
                                <asp:Label ID="lblDupDealNumber" runat="server" Text='<%# Bind("FIMAST") %>'></asp:Label>
                            </ItemTemplate>
                            <HeaderStyle Wrap="False" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="DealDate">
                            <ItemTemplate>
                                <asp:Label ID="lblDupDealDate" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "DealDate","{0:MM/dd/yyyy}") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Buyer">
                            <ItemTemplate>
                                <asp:Label ID="lblDupBuyer" runat="server" Text='<%# Bind("Buyer") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="GrossProfit">
                            <ItemTemplate>
                                <asp:Label ID="lblDupGrossProfit" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "GrossProfit","{0:n2}") %>'></asp:Label>
                            </ItemTemplate>
                            <ItemStyle HorizontalAlign="Right" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="AmtFinanced">
                            <ItemTemplate>
                                <asp:Label ID="lblDupAmtFinanced" runat="server" Text='<%#DataBinder.Eval(Container.DataItem, "AmtFinanced","{0:C}") %>'></asp:Label>
                            </ItemTemplate>
                            <ItemStyle HorizontalAlign="Right" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="BankName">
                            <ItemTemplate>
                                <asp:Label ID="lblDupBankName" runat="server" Text='<%# Bind("BankName") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
                <br />
                 <asp:Button ID="btnUse" runat="server" CausesValidation="false" OnClick="btnUse_Click" UseSubmitBehavior="false" Text="Use"></asp:Button>
<asp:Button ID="lbDelete" runat="server" UseSubmitBehavior="false" CausesValidation="False" OnClick="lbDelete_Click" Text="Delete"></asp:Button>
                 <asp:Label ID="lblMessagePop" runat="server"></asp:Label>
                <br />
            </div>

编辑:感谢Chad,他指出asp按钮默认使用提交行为。在按钮中将UseSubmitBehavior选项设置为false可以解决此问题。您现在可以使用弹出窗口中的asp按钮来调用您的c方法。