• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 816
  • Last Modified:

How to retrieve a deleted row in GridView

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
AXISHK
Asked:
AXISHK
1 Solution
 
QPRCommented:
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
 
AXISHKAuthor Commented:
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
 
QPRCommented:

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
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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.

 
QPRCommented:
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
 
AXISHKAuthor Commented:

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
 
AXISHKAuthor Commented:
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
 
QPRCommented:
Which bit is the problem?

DataNavigateUrlFormatString="~/ListFolder.aspx?idir={0}"  
this bit?
0
 
GreymanMSCCommented:
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
 
AXISHKAuthor Commented:
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
 
Computer101Commented:
Forced accept.

Computer101
Community Support Moderator
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Tackle projects and never again get stuck behind a technical roadblock.
Join Now