所以我有一個新的要求,對我來說很棘手,我目前無法弄清楚。我正在使用gridview來插入和更新數據。我的要求之一是當用戶手動添加新記錄時,如果存在相同的「交易編號」,則顯示彈出窗口。這彈出應該顯示已經存在的記錄。他們應該能夠點擊3個「使用」,「丟棄」或「確定」按鈕中的1個。 「使用」按鈕基本上會關閉彈出窗口並清除用戶輸入的文本框。「放棄」按鈕必須刪除存在的記錄,以便用戶可以使用相同的處理編號插入新記錄。原因是因爲交易編號是發生「交易」的最獨特的編號。通過我們從舊應用程序導出到新應用程序的方式,可以下載重複項,有時候會有一些信息比第一次導出時有更多的信息。這就是爲什麼我必須添加一個要求,讓用戶選擇要保留的記錄。我希望這對大家都有意義。我已經幹了一些事情,但這是我現在擁有的東西,而且我堅持不懈。使用jQuery從數據庫中的表中刪除重複條目
的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);
}
你是否試圖觸發該按鈕的點擊方法? –