0

我有以下代码工作正常

    <asp:TemplateField>
        <ItemTemplate>
            <div runat="server" id="divFileName" class="divFileName" title='<%# Eval("FileName")%>'>
                <%# Eval("FileName")%></div>
        </ItemTemplate>
    </asp:TemplateField>

的结果Eval("FileName")返回一个完整的路径字符串,如下所示:

C:\Windows\Microsoft.NET\Framework\sbs_diasymreader.dll

我想在客户端发送Eval("FileName");到一个 javascript 方法,该方法将裁剪Eval("FileName");值并仅返回文件名而不返回完整路径。(对于这个例子,它应该返回sbs_diasymreader.dll

我试图实现的结果是,最终当前包含带路径的全名的表将只显示没有路径的文件

如何才能做到这一点?

4

3 回答 3

0

如果FileName字段包含完整路径,您可以使用FileInfo

<%# new FileInfo((string)Eval("FileName")).Name %>
于 2012-11-07T08:12:31.657 回答
0

该表达式是在服务器端处理的,您无法在网格中显示 javascript 的返回值,您只需调用函数即可。改为这样做

<asp:TemplateField HeaderText="File Name">
<ItemTemplate>
   <%# System.IO.Path.GetFileName(Eval("FileName").ToString()) %>
</ItemTemplate>
</asp:TemplateField>
于 2012-11-07T08:24:27.067 回答
0

在 VB.NET 中,您可以使用以下内容或 Adrian Iftode 提到的内容。

<%# FileIO.FileSystem.GetName(Eval("FileName").ToString()) %>

或者,您可以使用您的代码并编写 jQuery 来遍历每个跨度(相应地更新您的选择器),如下所示:

    <script type="text/javascript">
        $(document).ready(function () {
            $("span").each(function () {
                $(this).text(getFileName($(this).text()));
            });
        });

        function getFileName(filePath) {
            var index = filePath.lastIndexOf("\\") + 1;
            return filePath.substring(index, filePath.length);
        }
    </script>
于 2012-11-07T08:26:05.213 回答