Solved

How to retrieve a deleted row in GridView

Posted on 2007-12-05
11
808 Views
Last Modified: 2013-11-26
I have bounded a DataGrid to reflect a particular files in a folder. I'm using Visual Studio 2005 with VB coding.

1. Have any idea how to capture the filename when user click the "Delete" Button in GridView.
2. Is it possilbe to include more parameter in DataNavigateUrlFormatString, say ="~/ListFolder.aspx?idir={0}",ifile={2} />

Thanks.


Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender

        Dim upFolder As String = MapPath("~/DMS/")
        Dim dir As New System.IO.DirectoryInfo(upFolder)

        rptFiles.DataSource = dir.GetFiles()
        rptFiles.DataBind()

        DirTree.DataSource = dir.GetDirectories
        DirTree.DataBind()

    End Sub
        <asp:gridview
        id="dirTree"
       autogeneratecolumns="false"
       GridLines="None"
          Runat="server" HorizontalAlign="Left">
            <Columns>        
          <asp:HyperLinkField
            DataTextField="Name"
            DataNavigateUrlFields="Name"
            DataNavigateUrlFormatString="~/ListFolder.aspx?idir={0}" />
          </Columns>
    </asp:gridview>
0
Comment
Question by:AXISHK
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
11 Comments
 
LVL 29

Expert Comment

by:QPR
ID: 20417232
Do you want to delete the record from the db and also an associated file from the filesystem?
I ask as I have just done exactly that and could post my code
0
 

Author Comment

by:AXISHK
ID: 20417243
Basically, not touching any Database, only retrieve the files from specifiy path and show on GridView and enable the "Delete" button per button. AFterwards, I willl delete the files from the server.

Thanks.
0
 
LVL 29

Expert Comment

by:QPR
ID: 20417286

This is very over simplified as my code got the doc filename and path from the db based on the DocID for that particular row in the gridview.
You may have to do something like.....
<asp:Button CommandName=<%#eval("DocPath_name")  %> ID="button1" runat="server" Text="Delete" OnClick="button1_Click" />
then in your code behind

Imports System.IO
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
              File.Delete(Server.MapPath(sender.CommandName))
End Sub
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 29

Expert Comment

by:QPR
ID: 20417292
the variable DocPath_name would be populated row by row based on the path to the folder and the filename
OnClick you would pass this value to the code behind which would then pass it to the File.Delete method
0
 

Author Comment

by:AXISHK
ID: 20417426

I tried to pu the control under the "Columns" but doesn't work. It seems that GridView don't support the bind of this control. Any idea. Can you show me how you bind the selected column on GridView ?

Thanks

  <Columns>        
          <asp:HyperLinkField
            DataTextField="Name"
            DataNavigateUrlFields="Name"
            DataNavigateUrlFormatString="~/ListFolder.aspx?idir={0}" />
          </Columns>
0
 

Author Comment

by:AXISHK
ID: 20417456
Protected Sub dirTree_RowDeleting(ByVal sender As Object, ByVal e As  
    System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles rptFiles.RowDeleting

 End Sub

Bascially the event RowDeleting is called for my previous posted code but I don't know how to retrieve the file name binded to the row of the GridView. Any idea ?

Again, if you think there is a way to get around of this, I could modify my coding on GridView.
tks
0
 
LVL 29

Expert Comment

by:QPR
ID: 20422434
Which bit is the problem?

DataNavigateUrlFormatString="~/ListFolder.aspx?idir={0}"  
this bit?
0
 
LVL 16

Accepted Solution

by:
GreymanMSC earned 500 total points
ID: 20424683
Add DataKeyNames="Name" to the gridview, then access the datakey value in the event.
    Protected Sub dirTree_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles dirTree.RowDeleting
        Dim gv As GridView = CType(sender, GridView)
        Dim TheValueToUse As String = gv.DataKeys(e.RowIndex).Value
        '....
    End Sub
 
        <asp:gridview id="dirTree"
            DataKeyNames="Name"
            autogeneratecolumns="false"
            GridLines="None"
            Runat="server" 
            HorizontalAlign="Left">
            <Columns>        
                <asp:HyperLinkField
                    DataTextField="Name"
                    DataNavigateUrlFields="Name"
                    DataNavigateUrlFormatString="~/ListFolder.aspx?idir={0}" />
                <asp:ButtonField ButtonType=Button CommandName=Delete Text="Delete" />
                
            </Columns>
        </asp:gridview>    

Open in new window

0
 

Author Comment

by:AXISHK
ID: 20424988
thanks. Sound like this is a way to go.

On more things, how to change the "DataNavigateUrlFormatString" per row before bind to GridView using the RowDataBound event. I could access the content of the DataNavigaterUrlField but I want to change the NavigterUrlFormatString dynamically.

Thanks again.
0
 
LVL 1

Expert Comment

by:Computer101
ID: 20952985
Forced accept.

Computer101
Community Support Moderator
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
Wouldn’t it be nice if you could test whether an element is contained in an array by using a Contains method just like the one available on List objects? Wouldn’t it be good if you could write code like this? (CODE) In .NET 3.5, this is possible…
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …

749 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question