asp:DataList控件用asp:LinkBut​​ton里面 - 有些奇怪

时间:2009-05-14 19:01:02

标签: asp.net

我正在编写一本试图学习ASP.NET的书中的例子,我偶然发现了一些奇怪的东西。首先,如果我按照书中所写的那样输入,VS会给我错误。这是代码,因为它写在书中:

    <asp:DataList ID="employeesList" runat="server">
    <ItemTemplate>
        <asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" />
        Name: <strong><%#Eval("Name") %></strong><br />
        Username: <strong><%#Eval("Username") %></strong><br />
        <asp:LinkButton ID="detailsButton" runat="server" Text=<%#"View more details about " + Eval("Name")%> 
            CommandName="MoreDetailsPlease" 
            CommandArgument=<%#Eval("EmployeeID")%> />
    </ItemTemplate>
    <SeparatorTemplate>
        <hr />
    </SeparatorTemplate>
</asp:DataList>

所以,我已经花了一段时间,并提出了这个实际编译的解决方案:

    <asp:DataList ID="employeesList" runat="server" onitemcommand="employeesList_ItemCommand">
    <ItemTemplate>
        <asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" />
        Name: <strong><%#Eval("Name") %></strong><br />
        Username: <strong><%#Eval("Username") %></strong><br />
        <asp:LinkButton ID="detailsButton" runat="server" Text='View more details about <%# Eval("Name") %>' 
            CommandName="MoreDetailsPlease" CommandArgument='<%Eval("EmployeeID") %>' />
    </ItemTemplate>
    <SeparatorTemplate>
        <hr />
    </SeparatorTemplate>
</asp:DataList>

请注意,我还在asp:DataList标记中添加了OnItemCommand,所以现在我可以按预期触发事件了。

然而,浏览器的结果并不是我所期望的; 强文中列出的名称和用户名显示正常,但应显示额外详细信息的Literal控件(EmployeeID字段)和LinkBut​​ton中的Name字段不会在页面中显示其值:

not showing as expected http://lh6.ggpht.com/_x84bQLYH57A/SgxzygartcI/AAAAAAAAAIY/nhT-6RUJa6o/s144/EmployeeDirectory_notshowing.jpg

应该说“EmployeeID:1”和“查看有关Zak Ruvalcaba的更多详情”

我想这是在另一个控件里面没有工作的Eval函数,任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

将LinkBut​​ton更改为:

<asp:LinkButton ID="detailsButton" runat="server" 
     Text='<%# Eval("Name", "View more details about {0}") %>' 
     CommandName="MoreDetailsPlease" 
     CommandArgument='<%# Eval("EmployeeID") %>' />

抱歉,我对参数的顺序感到困惑。我更新了我的答案。格式必须是第二个参数。

答案 1 :(得分:1)

您可以查看我昨天发布的另一个问题,其中涉及的内容类似于:

Need help with Eval inside DataList

但我确实相信Canavar会给出正确答案。