【问题标题】:How to Access Session/Variable Value in DataList Bind item in Asp.net?如何访问 Asp.net 中 DataList 绑定项中的会话/变量值?
【发布时间】:2012-11-07 14:49:27
【问题描述】:

我有一个 DataList,它在特定文件夹中显示上传的文件(.jpg、jpeg、gif 等),例如“EmpMainFolder”,其中包含员工文档的所有扫描副本。我想在 DataList 中显示它。当我给出静态文件夹名称时,以下代码可以正常工作。

以下代码适用于 .aspx 页面的 DataList 中的静态文件夹名称:

<asp:DataList ID="DataList1" runat="server" RepeatColumns="5" CellPadding="5" OnItemCommand="DataList1_ItemCommand">
            <ItemTemplate>
                <asp:Image Width="100" runat="server" ID="Image1" ImageUrl='<%# Bind("Name", "~/Uploads/Employee/{0}")%>' />
                <br />

                <asp:Label ID="Label1" Text='<%# Bind("Name") %>' runat="server" /><br />
                <asp:LinkButton ID="lbldocnm" runat="server" CommandName="ViewDocument" CommandArgument=**'<%# Bind("Name", "~/Uploads/Employee/{0}") %>'**>View</asp:LinkButton>
            </ItemTemplate>
            <ItemStyle BorderColor="Silver" BorderStyle="Dotted" BorderWidth="1px" HorizontalAlign="Center"
                VerticalAlign="Bottom" />
        </asp:DataList>

我想将 Session 中的当前员工文件夹名称设置为:

<asp:DataList ID="DataList1" runat="server" RepeatColumns="5" CellPadding="5" OnItemCommand="DataList1_ItemCommand">
        <ItemTemplate>
            <asp:Image Width="100" runat="server" ID="Image1" ImageUrl=**'<%# Bind("Name", "~/Uploads/Employee/%>'+ '<%#Session["EmpMainFolder"] %>'"+"/"+{0}")%>'** />
            <br />
 <asp:Label ID="Label1" Text='<%# Bind("Name") %>' runat="server" /><br />
 <asp:LinkButton ID="lbldocnm" runat="server" CommandName="ViewDocument" CommandArgument='<%# Bind("Name", "~/Uploads/Employee/{0}") %>'>View</asp:LinkButton>
 </ItemTemplate>
 <ItemStyle BorderColor="Silver" BorderStyle="Dotted" BorderWidth="1px" HorizontalAlign="Center"  VerticalAlign="Bottom" />
</asp:DataList>

但是,当文件夹名称通过会话动态设置时,它不会显示任何图像。

有什么想法吗? 感谢您的帮助!

【问题讨论】:

    标签: asp.net session datalist


    【解决方案1】:
    <asp:Image Width="100" runat="server" ID="Image1" ImageUrl='<%#"~/Uploads/Employee/"+ Eval("Name").ToString()+"/" +Session["EmpMainFolder"] %>'/>
    

    你可以这样使用。但是您能解释一下您在 ImageUrl 的 Bind 中所做的确切操作吗?
    你能提供任何用户的完整路径和url的可变部分吗?

    【讨论】:

    • 感谢@krshekhar 回复修改您的代码在某种程度上它工作正常......!
    【解决方案2】:

    试试这样的

    ImageURL='<%# GetImage((string)Eval("Name")) %>'
    

    这样写函数

    public static string GetImage(string name)
    {
    
            return "~/Uploads/Employee/"+ Session["EmpMainFolder"].ToString() + name;
    
    }
    

    【讨论】:

    • 如果可以在aspx本身中完成,创建一个方法是不是一个好主意?
    • @krshekhar - 如果您需要任何逻辑来在网格列中获取价值,我认为这样做很好......如果它的直接价值比不需要它..跨度>
    • @SHEKHARSHETE - 欢迎不要忘记支持答案并将其标记为已接受,如果它适合您...
    【解决方案3】:

    你可以通过 Eval 实现

    <asp:LinkButton ID="lbldocnm" runat="server" CommandName="ViewDocument" CommandArgument='<%# "~/Uploads/Employee/" +  Session["EmpMainFolder"] + "/" + Eval("Name") %>'>View</asp:LinkButton> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2010-10-11
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      相关资源
      最近更新 更多