首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么DataBinder.Eval不能工作

为什么DataBinder.Eval不能工作
EN

Stack Overflow用户
提问于 2010-10-02 00:16:59
回答 2查看 2.1K关注 0票数 1

我正在尝试创建一个使用中继器的简单菜单系统。在系统中,我想对类的子项使用不同的格式,并尝试使用一个If,它检查DataBinders结果和分支是否为“class”,但当我编译代码时,代码是:

未声明名称"Container“。

在所有的在线教程和MSDN中,Container.DataItem都是假定工作的,所以我找不到任何关于它不工作的信息。有谁能比我更多地使用数据库绑定器吗?

代码语言:javascript
复制
<asp:Repeater ID="TopNavRepeat" runat="server" DataSourceID="SqlDataSource1"  >
            <HeaderTemplate>
                <ul id="nav">
            </HeaderTemplate>
            <ItemTemplate>
                <li>
                    <asp:HiddenField ID="LinkIdField1" Value='<%# Eval("id") %>' runat="server" 
                            OnDataBinding="LinkIdField_ValueChanged" OnValueChanged="LinkIdField_ValueChanged"/>
                    <asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("Title") %>' NavigateUrl='<%# Eval("Url") %>'
                        ToolTip='<%# Eval("Description") %>'>
                    </asp:HyperLink>
                        <ul>
                        <!-- -->
                        <% If (CStr(DataBinder.Eval(Container.DataItem, "Title")) = "Classes")THEN %>
                        <asp:Repeater ID="ClassDownList" runat="server" DataSourceID="ClassDS">
                            <HeaderTemplate></HeaderTemplate>
                            <ItemTemplate>
                            <li><asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("name") %>' NavigateUrl='<%# "/Class/" & helpers.urlSafe(CStr(Eval("name"))) %>'
                            ToolTip='<%# CStr(Eval("name")) & " home page" %>' /></li>
                            </ItemTemplate>
                            <FooterTemplate></FooterTemplate>
                        </asp:Repeater>
                        <% Else %>
                        <asp:Repeater ID="DropDownList" runat="server" OnLoad="ChildDataList_Init">
                            <HeaderTemplate></HeaderTemplate>
                            <ItemTemplate>
                            <li><asp:HyperLink ID="HyperLink1" runat="server" Text='<%# Eval("Title") %>' NavigateUrl='<%# Eval("Url") %>'
                            ToolTip='<%# Eval("Description") %>' /></li>
                            </ItemTemplate>
                            <FooterTemplate></FooterTemplate>
                        </asp:Repeater>
                        <%End If %>
                        </ul>
                </li>
            </ItemTemplate>
            <FooterTemplate>
                </ul>
            </FooterTemplate>
        </asp:Repeater>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-06 17:38:50

我想你不能在中继器里使用<% If %>

只需在服务器端将.Visible=False设置为其中之一

或者尝试(不确定这是否有效)

代码语言:javascript
复制
<asp:Repeater Visible='<%# (CStr(DataBinder.Eval(Container.DataItem, "Title")) = "Classes") %>'>
票数 1
EN

Stack Overflow用户

发布于 2010-10-02 00:21:20

我不是一个喜欢VB的人,但这是不是因为你在进行赋值,而不是比较?

代码语言:javascript
复制
<%# If (CStr(DataBinder.Eval(Container.DataItem, "Title")) = "Classes")THEN %>

它不应该是:

代码语言:javascript
复制
<%# If (CStr(DataBinder.Eval(Container.DataItem, "Title")) == "Classes")THEN %>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3841058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档