SqlDataReader и пользовательский контроль

я пытаюсь использовать userControl для отображения данных SqlDataReader.

на главной странице

  public SqlDataReader Data2;

...

 <uc1:WebUserControl ID="WebUserControl1" RData1="<%=Data2 %>" runat="server" />

и в пользовательском контроле

  Repeater1.DataSource = RData1;

        Repeater1.DataBind();



     <asp:Repeater ID="Repeater1" runat="server">    <ItemTemplate> 
 <div class="row">   <b> 
 <%#DataBinder.Eval(Container.DataItem,
 "replay_subject")%></b><br />   
 <%#DataBinder.Eval(Container.DataItem,
 "replay_text")%><hr/> </div>   
 </ItemTemplate>
      </asp:Repeater>

Но я продолжаю получать эту ошибку

Не удается создать объект типа «System.Data.SqlClient.SqlDataReader» из его строкового представления «‹%=Data2 %>» для свойства «RData1».


person Bob    schedule 13.05.2010    source источник


Ответы (1)


Вы не можете назначить RData1, используя этот встроенный код в ASPX. Компилятор пытается преобразовать Data2 в строковое представление, чтобы установить свойство, а RData1 ожидает SqlDataReader, поэтому происходит сбой.

Вы должны назначить его на код позади, как это

WebUserControl1.RData1 = Data2;
person Claudio Redi    schedule 13.05.2010
comment
он не распознал объект WebUserControl1 из файла aspx - person Bob; 13.05.2010
comment
@Bob: вы должны назначить свойство в отделенном коде, в CS - person Claudio Redi; 13.05.2010
comment
я сделал. на той же странице находится ‹uc1:WebUserControl ID=WebUserControl1 runat=server /›. но не распознал. любая причина? - person Bob; 13.05.2010
comment
Можете ли вы вставить немного больше ASPX? В частности, код вокруг WebUserControl1 - person Claudio Redi; 14.05.2010
comment
‹%@ Язык страницы=C# AutoEventWireup=true CodeFile=ask_show.aspx.cs Inherits=Default2 %› ‹%@ Регистрация src=WebUserControl.ascx tagname=WebUserControl tagprefix=uc1 %› ‹!DOCTYPE html PUBLIC -//W3C// DTD XHTML 1.0 Transitional//EN w3.org/TR/xhtml1/DTD /xhtml1-transitional.dtd› ‹html xmlns=w3.org/1999/xhtml› ‹body› ‹div› ‹uc1:WebUserControl ID=WebUserControl1 runat=server /› ‹/div› ‹asp:Label ID=lbl_tags runat=server ›‹/asp:Label› ‹br /› ‹asp:Label ID=lbl_reply_table runat=server style=color: #FF0000 ›‹/asp:Label› - person Bob; 14.05.2010
comment
Единственный элемент управления, которого вы не видите в коде? Я не вижу очевидной проблемы в вашем коде. Ваш класс отделенного кода для ask_show.aspx — Default2? - person Claudio Redi; 14.05.2010