在 ASCX 控制中不执行 IF/ELSE 条件

发布于 2024-09-10 10:24:44 字数 998 浏览 5 评论 0原文

ASCX 控制程序加载到页面上。 在Repeater控件中,根据不同的条件显示不同的COLUMNS集合,并且DataTable具有不同的列集合。

所以,在 ASPX 页面上,这个构建工作很好。

    <ItemTemplate>
        <tr class="objectrow" href="<%# GetCompleteViewObjectLink(Convert.ToInt32(Eval("ID_Object")))%>">
            <td align="center" class="c1">
                <%# Eval("ID_Object") %>
            </td>
            <% if (GetObjectTypeName() == "Sot")
               { %>
            <td align="center" class="c6">
                <%# Eval("SOTName") != DBNull.Value ? Eval("SOTName") : ""%>
            </td>
            <% } %>
............................

但在程序加载到页面 ASCX-control 中我有一个异常:

错误:数据绑定: “System.Data.DataRowView”没有 包含一个名为 SOTName 的属性。

另一个不符合:在 aspx-page 中我的断点在行上

<% if (GetObjectTypeName() == "Sot")

已完成。但在 ascx-control 中则不然。

请帮忙!为什么行为如此不同?怎么样?

There ASCX-controls that the program-loaded onto the page.
In a Repeater control in which, depending on the conditions displayed a different set of COLUMNS and DataTable with a different set of columns.

So, on the ASPX-page, this construction work Good.

    <ItemTemplate>
        <tr class="objectrow" href="<%# GetCompleteViewObjectLink(Convert.ToInt32(Eval("ID_Object")))%>">
            <td align="center" class="c1">
                <%# Eval("ID_Object") %>
            </td>
            <% if (GetObjectTypeName() == "Sot")
               { %>
            <td align="center" class="c6">
                <%# Eval("SOTName") != DBNull.Value ? Eval("SOTName") : ""%>
            </td>
            <% } %>
............................

But in program-loaded to page ASCX-control I have an Exception:

Error: DataBinding:
'System.Data.DataRowView' does not
contain a property named SOTName.

and another does not conform: in aspx-page my breakpoint on row

<% if (GetObjectTypeName() == "Sot")

was work off. But in ascx-control NOT.

Please, help! Why behaviour is so different? How to be?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

方圜几里 2024-09-17 10:24:44

检查数据的实际行数,即行数?我敢打赌你的数据源是空的。

我认为你没有在你认为应该获取数据的时候获取数据。

用户控件的页面加载事件将在 aspx 页面加载之前执行。如果您在 .aspx 的页面加载中的 .ascx 中获取某种类型的查询参数,则应该在 .aspx 的 Page_Init 中获取该参数。

Check your data for actual rows, i.e. row count? I would bet your DataSource is null.

I don't think you're getting data when you think you should be.

The Page Load event of the user control will execute before the aspx Page Load. If you are getting some type of parameter for your query in the .ascx in the Page Load of the .aspx, you ought to grab that in the Page_Init of the .aspx.

深府石板幽径 2024-09-17 10:24:44

正如 TheGeekYouNeed 指出的那样,了解 Repeater 的 DataSource 何时定义至关重要,因为控件的事件在页面事件之前处理。

您可以添加代码来

<td>GetObjectTypeName='<%# GetObjectTypeName() %>'</td>

查明 if() 条件是否适用于您的数据。

As TheGeekYouNeed points out, it's crucial to know when the DataSource of the Repeater is defined, as the control's events are processed before the page events.

You can add code like

<td>GetObjectTypeName='<%# GetObjectTypeName() %>'</td>

to find out whether the if() condition applies for your data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文