Удалить строку GridView - PullRequest
       5

Удалить строку GridView

0 голосов
/ 29 февраля 2012

Я пытаюсь удалить строку в GridView с помощью ввода type = "image" и идентификатора этой строки, связанной с изображением, поэтому, если вы нажмете на это изображение, он вызовет функцию в asp.net и удалитэту запись из базы данных на основе этого идентификатора и перезагрузите эту сетку.Какой лучший способ подойти к этому?Спасибо за вашу помощь.

<asp:GridView ID="grdHouses" runat="server"
        CssClass="gridview"
        RowStyle-CssClass="gridview_itm"
        AlternatingRowStyle-CssClass="gridview_aitm"
        HeaderStyle-CssClass="gridview_hdr" Width="100%" AutoGenerateColumns="False">
  <Columns>
    <asp:TemplateField HeaderText="" ItemStyle-Width="2%">
      <ItemTemplate>
        <input type="image" name="imgDelete" class="listViewTdToolsS1" src="../App_Themes/Sugar2006/images/delete_inline.gif" alt="rem" style="height:12px;width:12px;border-width:0px;" value=""
        <%# DataBinder.Eval(Container.DataItem, "ID") %>">
      </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField>
      <HeaderTemplate>
        <asp:LinkButton ID="Name_SortLnkBtn" runat="server" Text="NAME" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Name" CausesValidation="false" />
        <asp:ImageButton ID="Name_SortImgBtn" runat="server" Visible="false" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Name" CausesValidation="false" />
      </HeaderTemplate>
      <ItemTemplate>
        <%#Eval("Name")%>
      </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField>
      <HeaderTemplate>
        <asp:LinkButton ID="Description_SortLnkBtn" runat="server" Text="DESCRIPTION" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Description" CausesValidation="false" />
        <asp:ImageButton ID="Description_SortImgBtn" runat="server" Visible="false" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Description" CausesValidation="false" />
      </HeaderTemplate>
      <ItemTemplate>
        <%#Eval("Description")%>
      </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>

Ответы [ 2 ]

0 голосов
/ 25 августа 2014

Сначала добавьте DataKeyName в сетку, как это

<asp:GridView ID="grdHouses" runat="server"
    CssClass="gridview" DataKeyNames="ID"
    RowStyle-CssClass="gridview_itm"
    AlternatingRowStyle-CssClass="gridview_aitm"
    HeaderStyle-CssClass="gridview_hdr" Width="100%" AutoGenerateColumns="False" onrowdeleting="grdHouses_RowDeleting">
<Columns>
<asp:TemplateField HeaderText="ID">
        <ItemTemplate>
           <asp:Label ID="lblID" runat="server" Text='<%# Bind("ID") %>'></asp:Label>
        </ItemTemplate>
     </asp:TemplateField>
<asp:TemplateField>
  <HeaderTemplate>
    <asp:LinkButton ID="Name_SortLnkBtn" runat="server" Text="NAME" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Name" CausesValidation="false" />
    <asp:ImageButton ID="Name_SortImgBtn" runat="server" Visible="false" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Name" CausesValidation="false" />
  </HeaderTemplate>
  <ItemTemplate>
    <%#Eval("Name")%>
  </ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
  <HeaderTemplate>
    <asp:LinkButton ID="Description_SortLnkBtn" runat="server" Text="DESCRIPTION" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Description" CausesValidation="false" />
    <asp:ImageButton ID="Description_SortImgBtn" runat="server" Visible="false" ToolTip="Click to Sort Column" CommandName="Sort" CommandArgument="Description" CausesValidation="false" />
  </HeaderTemplate>
  <ItemTemplate>
    <%#Eval("Description")%>
  </ItemTemplate>
</asp:TemplateField>
 <asp:TemplateField HeaderText="Delete?">
<ItemTemplate>
    <span onclick="return confirm('Are you sure to Delete the record?')">
       <asp:LinkButton ID="lnkB" runat="Server" Text="Delete" CommandName="Delete">    </asp:LinkButton>
     </span>
 </ItemTemplate>

 </asp:TemplateField>
  </Columns>
 </asp:GridView>

Тогда по коду позади используйте RowDeleting gridview

protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    try
    {
        string id = GridView1.DataKeys[e.RowIndex].Values["ID"].ToString();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "Delete FROM Table Name where ID='" + id + "'";
        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();                              
    }
    catch (Exception ex)
    {

    }
    finally
    {
        if (con.State == ConnectionState.Open)
        {
            con.Close();

        }
    }        
}
0 голосов
/ 29 февраля 2012

Командная кнопка:

<asp:TemplateField HeaderText="" ItemStyle-Width="2%">
 <ItemTemplate>        
         <asp:ImageButton runat="server"  
             CommandName='DeleteItem'
             CommandArgument = '<%# Eval("ID") %>'
             CssClass="listViewTdToolsS1"
             ImageUrl="~/App_Themes/Sugar2006/images/delete_inline.gif"
             Tooltip="rem"
 </ItemTemplate>     
</asp>

Обработка события GridView OnItemCommand:

void ContactsGridView_RowCommand(Object sender, GridViewCommandEventArgs e)
  {
    // If multiple buttons are used in a GridView control, use the
    // CommandName property to determine which button was clicked.
    if(e.CommandName=="DeleteItem")
    {
         var id = Int32.Parse(e.CommandArgument);
         // delete the object from database
         Database.DeleteObject(id);
         // rebind the gridview
         grdHouses.DataSource = DataBase.GetItems();
          grdHouses.DataBind();
    }
  }

Поскольку источник данных задан в коде, я рекомендую использовать DeleteItem или что-то еще вместо Удалить в качестве имени команды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...