Solved

How to assign a variable to the DataNavigateUrlFormatString property of a hyperlinkcolumn in a datagrid.

Posted on 2004-10-05
8
2,134 Views
Last Modified: 2007-12-19
I have a vb.net aspx page which allows the user to make certain selections.  The value of the selections is stored in a variable called strPath.

I need to somehow get this variable into DataNavigateUrlFormatString.

I have the following code so far

[code]<%@ Page Language="VB" Debug=true explicit="true" aspcompat=true  %>
<%@ Import Namespace="System.IO" %>

<script language="VB" runat="server">

      Dim strPath As String = "mainfolder"
      Dim strOldPath As String

      Sub Page_Load(sender as Object, e as EventArgs)
            if not Page.IsPostBack then
                  '## GETTING A MAP OF THE DIRECTORY AND SAVING IT IN A ARRAY
                  dim oDir as DirectoryInfo = new DirectoryInfo(Server.Mappath(strPath))
                  dim aList as Array = oDir.GetDirectories()

                  '## BINDING THE DIRECTORY TO THE DROPDOWNLIST AND ADDING AND MAIN
                  '## DIRECTORY TO THE TOP OF THE LIST
                  ddlSubFolders.Datasource = aList
                  ddlSubFolders.DataBind()
                  ddlSubFolders.Items.Insert(0, strPath)

                  '## BINDING THE MAIN DIRECTORY TO THE DATAGRID
                  dgFileList.DataSource = oDir.GetFiles()
                  dgFileList.DataBind()
                  
                  lblDocCount.text = "<font color=#4B92D9>" & dgFileList.items.count & "</font> document(s) found"
            end if
      End Sub
      
      '## CHANGES THE DIRECTORY BASED ON THE SELECTED DROPDOWNLIST ITEM
      Sub FolderChange(sender as Object, e as EventArgs)
            '## CHECKS TO SEE IF THE FIRST LISTITEM IS SELECTED OR NOT
            if ddlSubFolders.SelectedIndex = 0 then
                  strOldPath = strPath
            Else
                  strOldPath = strPath & "/"
                  strOldPath = strOldPath & ddlSubFolders.SelectedItem.Text
            End If
            
            '## REBINDS THE PAGES WITH THE NEW DIRECTORY INFORMATION
            dim oDir as DirectoryInfo = new DirectoryInfo(Server.Mappath(strOldPath))
            dgFileList.DataSource = oDir.GetFiles()
            dgFileList.DataBind()
            
            lblDocCount.text = "<font color=#4B92D9>" & dgFileList.items.count & "</font> document(s) found"
      End Sub
</script>

<html>
      <head>
            <title>Page Title</title>
      </head>
      <body>
            <form id="form1" method="Post" runat="server">
                  <asp:Label
                                    id="page_title"
                                    Font-Size="11"
                                    Font-Name="Arial"
                                    Font-Bold="true"
                                    ForeColor="#00436c"
                                    text=""
                                    runat="server" /><br />
                                    
                  <asp:dropdownlist
                                    id="ddlSubFolders"
                                    Font-Name="Arial"
                                    font-size="8"
                                    runat="server"
                                    OnSelectedIndexChanged="FolderChange"
                                    autopostback="true" /><p />
                                    
                  <asp:DataGrid
                                    id="dgFileList"
                                    runat="server"
                                    gridlines="none"
                                    AutoGenerateColumns="false"
                                    Font-Name="arial"
                                    showheader="false">
                        <Columns>
                              <asp:HyperLinkColumn
                                    DataNavigateUrlField="Name"
                                    DataNavigateUrlFormatString="staticfolder/{0}"
                                    DataTextField="Name"
                                    Target="_Blank" />
                        </Columns>
                  </asp:DataGrid><br />
                  
                  <asp:label id="lblDocCount" runat="server" />
            </form>
      </body>
</html>[/code]
0
Comment
Question by:narmi2
8 Comments
 
LVL 18

Expert Comment

by:DotNetLover_Baan
ID: 12225346
Which part is giving you trouble ?
-Baan
0
 
LVL 1

Author Comment

by:narmi2
ID: 12225362
the following needs to be dynamic, i dont know if thats possible without changing the whole solution:

DataNavigateUrlFormatString="staticfolder/{0}"

i need to get the variable "strOldPath into DataNavigateUrlFormatString somehow!
0
 
LVL 5

Expert Comment

by:stumpy1
ID: 12225369
Can you not just assign strPath to DataNavigateUrlFormatString through the VB server code?
0
 
LVL 1

Author Comment

by:narmi2
ID: 12225375
True, whats the best way to get around this?
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 1

Author Comment

by:narmi2
ID: 12225385
sorry i miss read your post stumpy.

I dunno how to do that?
0
 
LVL 1

Author Comment

by:narmi2
ID: 12225478
to give you a better understanding of the problem, the hyperlinks produce the following url

http://192.168.100.16/mainfolder/staticfolder/test.doc

I need the staticfolder bit to be dynamic.

I thought I would simply be able to do something like

DataNavigateUrlFormatString="<%strOldPath%>/{0}"

But this gives the following url

http://192.168.100.16/mainfolder/<%strOldPath%>/test.doc
0
 
LVL 28

Expert Comment

by:mmarinov
ID: 12225486
Hi,

replace this
<Columns>
                         <asp:HyperLinkColumn
                              DataNavigateUrlField="Name"
                              DataNavigateUrlFormatString="staticfolder/{0}"
                              DataTextField="Name"
                              Target="_Blank" />
                    </Columns>

with this

<Columns>
     <asp:TemplateColumn>
        <ItemTemplate>
            <asp:HyperLink id="hl" runat="server" NavigateUrl="<%# DataBinder.Eval(Container.DataItem, "strOldPath") %>/<%# DataBinder.Eval(Container.DataItem, "Name") %>" Text="<%# DataBinder.Eval(Container.DataItem, "Name") %>
" />

        </ItemTemplate>
     </asp:TemplateColumn>
</Columns>


Regards,
B..M
0
 
LVL 18

Accepted Solution

by:
DotNetLover_Baan earned 500 total points
ID: 12225502
This can be done in datagrid's ItemBound event.

Sub dgFileList_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
        Dim HLCol As HyperLinkColumn
        HLCol = MyDataGrid.Columns(0)
        HLCol.DataNavigateUrlFormatString = "staticfolder/{0}"
End Sub
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
This is a video that shows how the OnPage alerts system integrates into ConnectWise, how a trigger is set, how a page is sent via the trigger, and how the SENT, DELIVERED, READ & REPLIED receipts get entered into the internal tab of the ConnectWise …
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…

930 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now