Как правильно включить два динамических элемента в NavigateURL?

У меня есть вид сетки с использованием полей привязки, гиперссылки и шаблона.

Я пытаюсь понять, как правильно включить два динамических элемента в NavigateURL как элемента управления Lo-Fi:HyperLink, так и элемента управления Hi-Fi:HyperLink Я знаю, как это сделать с полем HyperLinkField, как и во вторых двух столбцах, но я не могу использовать что внутри столбца шаблона.

Мне нужно объединить элемент <%# Eval("Locker_LO_Filename")%>, который я использую для свойства text, в конец URL-адреса, где в настоящее время находится {1}.

<asp:GridView ID="gvLocker" runat="server" HeaderStyle-BackColor="Goldenrod" 
        HeaderStyle-ForeColor="DarkBlue" AlternatingRowStyle-BackColor="Cornsilk" 
            Font-Names="Verdana,arial,helvetica" AutoGenerateColumns="False" Font-   Size="13px" Width="640px" BorderColor="#404040">
            <Columns>   
                <asp:BoundField DataField="memid" HeaderText="MemID" ReadOnly="True" SortExpression="memid"
                    Visible="False" HeaderStyle-Font-Size="13px" />                         
                <asp:HyperLinkField  DataNavigateUrlFormatString="myLockerEditSong.aspx?ID={0}&amp;li={1}"
                    DataTextField="EditIt" DataNavigateUrlFields="memid,lockid" HeaderStyle-Font-Size="13px">
                    <ItemStyle Width="65px" Font-Size="13px" />
                    </asp:HyperLinkField>
                <asp:HyperLinkField  DataNavigateUrlFormatString="myLockerDeleteSong.aspx?ID={0}&amp;li={1}"
                    DataTextField="Delete" DataNavigateUrlFields="memid,lockid" HeaderStyle-Font-Size="13px">
                    <ItemStyle Width="65px" Font-Size="13px" />
                </asp:HyperLinkField>
                <asp:TemplateField HeaderText="Song Information" HeaderStyle-Font-Size="13px">
              <ItemTemplate>
                        <strong><asp:Label ID="Label1" runat="server" Text='<%# Eval("Locker_Title") %>'></asp:Label></strong><br />
                        Lo-Fi:<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("memid", "/uploads/{0}/Locker/LoFi/{1}") %>'
                            Text='<%# Eval("Locker_LO_Filename") %>' Font-Size="13px"></asp:HyperLink><br />
                        Hi-Fi:<asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl='<%# Eval("memid", "/uploads/{0}/Locker/HiFi/{1}") %>'
                            Text='<%# Eval("Locker_HI_Filename") %>' Font-Size="13px"></asp:HyperLink>                                
                    </ItemTemplate>
                    <ItemStyle Width="350px" Font-Size="13px" />
                </asp:TemplateField>
                <asp:TemplateField HeaderText="File Information" SortExpression="Locker_UploadDate" HeaderStyle-Font-Size="13px">
                    <ItemTemplate>
                       <strong>Uploaded:</strong> <asp:Label ID="Label2" runat="server" Text='<%# Eval("Locker_UploadDate") %>'></asp:Label><br />
                       <strong>Modified:</strong> <asp:Label ID="Label3" runat="server" Text='<%# Eval("Locker_DateLastModified") %>'></asp:Label>
                       <ItemStyle Font-Size="13px" />
                    </ItemTemplate>                        
                </asp:TemplateField>                    
            </Columns>        
        <HeaderStyle BackColor="#FFDF59" ForeColor="Maroon" HorizontalAlign="Left" />
        <AlternatingRowStyle BackColor="PaleGoldenrod" />
    </asp:GridView>

person Community    schedule 21.05.2009    source источник


Ответы (2)


Вместо ‹% # Eval (..)%> используйте следующее ..

<%# FormatHiFi(DataBinder.Eval(Container.DataItem, "Locker_Title"), DataBinder.Eval(Container.DataItem, "OtherStringName"))%>

Это вызовет некоторый код на странице кода программной части (см. Ниже), который при необходимости отформатирует строку.

protected string FormatHiFi(object str1, object str2) 
{
   return string.Format("/uploads/{0}/Locker/HiFi/{1}", str1.ToString(), str2.ToString())
}

То же самое можно использовать и для Lo-Fi. Я надеюсь, что это поможет, а если нет, то по крайней мере укажет в правильном направлении.

person Craig    schedule 21.05.2009
comment
Крейг - за исключением необходимости переписывать для VB.net и добавлять правильные имена полей в вызов функции, ваше предложение сработало отлично. Несмотря на все стрессы, я забыл, что вы можете вызывать функции из элемента шаблона. Большое спасибо за помощь. - person ; 21.05.2009