?
Solved

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

Posted on 2004-10-05
8
Medium Priority
?
2,187 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
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
LVL 1

Author Comment

by:narmi2
ID: 12225375
True, whats the best way to get around this?
0
 
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 2000 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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

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

Sometimes in DotNetNuke module development you want to swap controls within the same module definition.  In doing this DNN (somewhat annoyingly) swaps the Skin and Container definitions to the default admin selections.  To get around this you need t…
IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an anti-spam), the admin…
As many of you are aware about Scanpst.exe utility which is owned by Microsoft itself to repair inaccessible or damaged PST files, but the question is do you really think Scanpst.exe is capable to repair all sorts of PST related corruption issues?
Suggested Courses
Course of the Month16 days, 8 hours left to enroll

862 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