0

有 ASCX-controls 将程序加载到页面上。在一个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 控件中我有一个例外:

错误:DataBinding:“System.Data.DataRowView”不包含名为 SOTName 的属性。

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

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

下班了。但在 ascx-control 中不是。

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

4

2 回答 2

0

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

您可以添加类似的代码

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

找出 if() 条件是否适用于您的数据。

于 2010-07-20T09:45:34.550 回答
0

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

我不认为你应该得到数据。

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

于 2010-07-20T08:38:07.160 回答