Perform actions before a row is deleted from a GridView or a DetailsView

I'm a big fan of caching objects on the web server, really saves loads of unneccessary trips to SQL Server and those precious resources.

In a recent project I built some administration screens to change the configuration of my site, as it happens this data was cached on the server for 8 hours at a time.

Rather than let the cache expire for the changes to be picked up I leveraged a feature of the GridView and DetailsView controls I was using, to clear the cache on a DELETE or INSERT by simply using the RowDeleting Event on the GridView and the ItemInserting on the DetailsView.

Here's the code:

protected void ProductCategoriesGridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    string categoryID = ((HiddenField)ProductCategoriesGridView.Rows[e.RowIndex].FindControl("CATEGORY_ID")).Value;
    try
    {
        Cache.Remove("PRODUCTS_" + categoryID);
    }
    catch (Exception)
    {       
            
    }
}

Using the RowIndex property of the GridViewDeleteEventArgs, you can then access the row that you're just about to delete. Here I have a hidden field that holds a key suffix to a cached object. This isn't a key in my GridView or I would have used the DataKeys property.

When I need to insert some data via the DetailsView I used the following code on the ItemInserting event.

protected void ProductCategoryDetailsView_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{
    string categoryID = ((DropDownList)ProductCategoryDetailsView.Rows[0].FindControl("CategoryDropDownList")).SelectedValue;

    try
    {
         Cache.Remove("PRODUCTS_" + categoryID);
    }
    catch (Exception)
    {


    }

}

Here I'm grabbing the key suffix from a dropdown list in the DetailsView. I clear the cache and perform the INSERT to the database. This will ensure that the latest data is loaded and cached for the next request.

Author Paul Marshall

A self confessed Microsoft bigot, Paul loves all Microsoft products with a particular fondness for SQL Server. Paul is currently focusing on Web 2.0 patterns and practices and is always looking for better ways of doing things.

I love the .net platform, and I find it to be the most productive toolset I have used to date.

Add Comment

Name
Comment
 

Your comment has been received and will be shown once it passes moderation.