Ako na mazanie položiek GridView s efektným JavaScriptovým potvrdením

Kategória: .NET, C#, publikované: 15.02.2010, autor: Igor Kulman

Ak používate v komponente GridView na mazanie položiek štandardnú funkcionalitu,isto vás už napadlo, pridať na tlačidlo Zmazať nejaký potvrdzovací dialóg, aby nedochádzalo k nechceným zmazaniam položiek.

Najjednoduchším riešením je využiť základné možnosti JavaScriptu.

  1. <asp:GridView ID="GridView1" runat="server" DataKeyNames="id" DataSourceID="InvoicesDS" OnRowDataBound="GridView1_RowDataBound">
  2. <Columns>
  3. ...
  4. <asp:TemplateField ShowHeader="False">
  5. <ItemTemplate>
  6. <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete"
  7. OnClientClick='return confirm("Naozaj chcete zmazať túto položku?");'
  8. Text="Zmazať" />
  9. </ItemTemplate>
  10. </asp:TemplateField>
  11. </Columns>
  12. </asp:GridView>

Takýto štandardný potvrdzovací dialóg však nevyzerá vôbec dobre, nie je možné upraviť jeho vzhľad, titulok okna a ani názvy tlačidiel. Oveľa lepší výsledok je možné dosiahnuť pomocou jQuery Impormtu, je to však trochu komplikovanejšie.

dialog.jpg

Najprv je potrebné do hlavičky vložiť odkaz na css a js od jQuery Impromptu

  1. <script src="/Scripts/jquery-impromptu.2.6.min.js" type="text/javascript"></script>
  2. <link href="/css/impromptu.css" rel="stylesheet" type="text/css" />

a pomocnú funkciu

  1. function confirmDeleteResult(v, m, f) {
  2. if (v)
  3. $('#' + f.hidID).click();
  4. }

V definícií GridView zameníme štandardné tlačidlo na zmazanie záznamu na skryté tlačidlo,ktoré vykoná skutočné zmazanie a odkaz,ktorý sa bude zobrazovať

  1. <asp:GridView ID="GridView1" runat="server" DataKeyNames="id" DataSourceID="InvoicesDS" OnRowDataBound="GridView1_RowDataBound">
  2. <Columns>
  3. ...
  4. <asp:TemplateField>
  5. <ItemTemplate>
  6. <a id="linkDelete" runat="server" href="#" title="<%$ Resources: Default, Delete %>"><asp:Image ID="Imagecasas1" runat="server" AlternateText="<%$ Resources: Default, Delete %>" ImageUrl="~/img/delete.png" /></a>
  7. <asp:Button runat="server" CommandName="Delete" ID="btnDelete" Style="display: none;" />
  8. </ItemTemplate>
  9. </asp:TemplateField>
  10. </Columns>
  11. </asp:GridView>

Najdôležitejšia časť sa deje v Code Behind, priradenie dialógu na odkaz

  1. protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  2. {
  3. if (e.Row.RowType == DataControlRowType.DataRow)
  4. {
  5. HtmlAnchor linkDelete = (HtmlAnchor)e.Row.FindControl("linkDelete");
  6. Button btnDelete = (Button)e.Row.FindControl("btnDelete");
  7.  
  8. string prompt = "$.prompt('Naozaj chcete danú položku zmazať?"
  9. + "<input type=\"hidden\" value=\"{0}\" name=\"hidID\" />'"
  10. + ", {{buttons: {{ Áno: true, Nie: false }}, callback: confirmDeleteResult}} ); return false; ";
  11. linkDelete.Attributes["onclick"] = string.Format(prompt, btnDelete.ClientID);
  12. }
  13. }

Pre dosiahnutie lepšieho efektu odporúčam (v mojom prípade do ObjectDataSource) pridať zobrazenie hlásenia o úspešnom vymazaní položky

  1. protected void invoicesDS_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
  2. {
  3. string prompt = "<script>$(document).ready(function(){{$.prompt('{0}!');}});</script>";
  4. string message = string.Format(prompt, "Položka úspešne zmazaná");
  5. ClientScript.RegisterStartupScript(typeof(Page), "alert", message);
  6. }
Sledujte moje články: vybrali.sme.sk Linkuj.cz  

ASP.NET a vylepšenie štandardných WebForms komponent
Pri práci s WebForms komponentami v ASP.NET som si viackrát želal, aby DropDownList a RadioButtonList mali metódy... čítať ďalej

Môj pohľad na Windows Phone 7
Ak sledujete dianie okolo inteligentných mobilných zariadení určite vám neuniklo uvedenie nového mobilného... čítať ďalej

Komentáre

RSS komentárovRSS komentárov

K článku "Ako na mazanie položiek GridView s efektným JavaScriptovým potvrdením" zatiaľ nie sú žiadne komentáre.

 

Pridať komentár

(povinné)

(povinný,nezverejňuje sa)


Odoslať komentár

Autor

Igor Kulman Igor Kulman at LinkeIn
Igor Kulman at Facebook
Igor Kulman at Flick
Igor Kulman at Twitter

Autor je študentom informatiky na Univerzite Karlovej v Prahe, pracuje ako Solution Architect Assistant a pôsobil aj ako prispievateľ počítačového magazínu.

Kategórie

Náhodná referencia

Realfipos

Realfipos