1

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

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>

现在脚本调用的分区有另一个gridview来显示现有记录..

<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);
                }
4

2 回答 2

1

编辑:尝试从您的 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");
    }
 });
于 2013-08-26T17:07:35.070 回答
0

我找到了解决方案。我只是将按钮更改为 LinkBut​​tons。出于某种原因,如果将 asp 链接按钮放置在网格视图的外部或内部,则一切正常。这是带有gridview的弹出窗口。

    <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>

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

于 2013-08-29T14:22:05.603 回答