none
Repeater a Delete button

    Dotaz

  • Dobrý den,

    používám prvek Repeater na výpis článků a jejich shrnutí z databáze. Ke každé položce jsem přidal tlačítko, které by daný článek smazalo z databáze. Bohužel jak to mám teď napsané sice nezpůsobí chybu, ale požadovaná akce se po stisku tlačítka neprovede.

     

    Code Snippet

    <asp:Repeater ID="repArticles" runat="server" DataSourceID="mssqlSource" >

      <ItemTemplate>

       <div class="articleBox">

         <h3 class="articleTitle">

           <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# "~/ShowArticle.aspx?ID=" + Eval("articleID") %>'

    Text='<%# Bind("articleTitle") %>' CssClass="articleTitle" /></h3>

         <div class="articleAuthor"><asp:Literal ID="litArticleAuthor" runat="server" Text='<%# "Autor:&nbsp;" + Eval("articleAuthor") %>' /></div>

         <p class="articleText"><asp:Literal ID="litArticleContent" runat="server" Text='<%# Bind("articlePrelude") %>' /></p>

         <div><asp:Literal ID="litArticleDate" runat="server" Text='<%# "Publikov no:&nbsp;" + Eval("articleDate") %>' /></div>

         <asp:ImageButton runat="server" ID="btnDelete" ImageUrl="~/App_Themes/Dark/Images/Delete.gif"

    AlternateText="Delete article" OnClick="btnDelete_Click" CommandArgument='<%# Eval("articleID") %>' />

       </div>

      </ItemTemplate>

    </asp:Repeater>

     

    Code Snippet

    protected void btnDelete_Click(object sender, EventArgs e) {

      string stringPripojeni = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["mssql"].ConnectionString;

      System.Data.SqlClient.SqlConnection spojeni = new System.Data.SqlClient.SqlConnection(stringPripojeni);

      string sqlQuerry = "DELETE [Articles] WHERE [ArticleID] = @ArticleID";

      System.Data.SqlClient.SqlCommand prikaz = new System.Data.SqlClient.SqlCommand(sqlQuerry, spojeni);

      try {

        spojeni.Open();

        int pocet = prikaz.ExecuteNonQuery();

      }

      finally {

        spojeni.Close();

        Response.Redirect("~/Default.aspx");

      }

    }

     

     

    Problém bude asi v tom, že tlačítko neví, odkud brát ID článku. V kódu na pozadí mi chybí specifikace parametru @ArticleID , což právě netuším, odkud brát.
    11. června 2008 11:08

Odpovědi

  • Místo použití onclick použij oncommand, pak budeš moci pomocí argumentu získat hodnotu CommandArgument.

     

    protected void Button1_Command(object sender, CommandEventArgs e)

    {

    Response.Write(e.CommandArgument.ToString());

    }

     

    5. července 2008 7:52
  • Mimo pooužití události Command je potřeba ten CommandArgument předat SqlCommandu

     

    Code Snippet

    prikaz.Parameters.AddWithValue("@ArticleID", e.CommandArgument);

     

     

     

     

    16. července 2008 20:19
    Moderátor

Všechny reakce

  • Místo použití onclick použij oncommand, pak budeš moci pomocí argumentu získat hodnotu CommandArgument.

     

    protected void Button1_Command(object sender, CommandEventArgs e)

    {

    Response.Write(e.CommandArgument.ToString());

    }

     

    5. července 2008 7:52
  • Mimo pooužití události Command je potřeba ten CommandArgument předat SqlCommandu

     

    Code Snippet

    prikaz.Parameters.AddWithValue("@ArticleID", e.CommandArgument);

     

     

     

     

    16. července 2008 20:19
    Moderátor