2012-07-26 58 views
0

Master.cs文件用户控制没有得到实例化

ChatUserControl user1 = new ChatUserControl(); 
         ChatUserControl user2 = new ChatUserControl(); 
         ChatUserControl user3 = new ChatUserControl(); 
         divChatUserControlCover.Controls.Add(user1); 
         divChatUserControlCover.Controls.Add(user2); 
         divChatUserControlCover.Controls.Add(user3); 

private void BindUserControls() 
      { 

           ChatUserControl user1 = divChatUserControlCover.FindControl("user1") as ChatUserControl; 
      } 

ChatUserControl.cs

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ChatUserControl.ascx.cs" 
    Inherits="MetamorphismApp.ChatUserControl" %> 

<asp:Timer ID="timer1" runat="server" OnTick="timer1_Tick" Interval="5000"> 
</asp:Timer> 
<div id="divChatWindow" class="clChatWindow"> 
    <div> 
     <asp:Label runat="server" Text='<%# Eval("username") %>' class="divHeader" ID="lblChatFriend"></asp:Label> 
     <asp:Image ID="imgFriend" runat="server" CssClass="classFriendImage" /> 
     <asp:LinkButton ID="lbClose" runat="server" CommandName="Close" CssClass="lbClose" 
      OnClick="lbClose_Click">Close</asp:LinkButton></div> 
    <div class="chatText" id="idChatText" runat="server"> 
     <asp:UpdatePanel ID="UpdatePanel" runat="server"> 
      <Triggers> 
       <asp:AsyncPostBackTrigger ControlID="timer1" EventName="Tick" /> 
       <asp:AsyncPostBackTrigger ControlID="btnSendChat" EventName="Click" /> 
      </Triggers> 
      <ContentTemplate> 
       <asp:Repeater runat="server" ID="rpChatMessages"> 
        <ItemTemplate> 
         <asp:Image ID="imageForFriend" runat="server" CssClass="clFriendsImage" ImageUrl='<%# "HttpImageHandler.jpg?username=" + DataBinder.Eval(Container.DataItem,"fromusername").ToString() %>' /> 
         <asp:Label ID="chatMessage" runat="server" Text='<%# Eval("Message") %>'></asp:Label> 
         <br> 
        </ItemTemplate> 
       </asp:Repeater> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
    <asp:TextBox ID="txtChatMessage" runat="server" Width="142px" CssClass="clChatMessage" EnableViewState="true" 
     TextMode="MultiLine"></asp:TextBox> 
    <asp:LinkButton ID="btnSendChat" runat="server" CommandName="Insert" CommandArgument='<%# Eval("username") %>' 
     OnClick="btnSendChat_Click">Send</asp:LinkButton> 

</div> 

Master.cs

private void BindUserControls() 
     { 

          ChatUserControl user1 = divChatUserControlCover.FindControl("user1") as ChatUserControl; 
     } 

我得到在user1的控制BindUserControls错误;对象引用未设置为对象的实例

回答

0

最有可能是实例化并将控件放入div的代码尚未调用。确保即使在回发时也创建控件,以便可以触发/处理更多事件。

0

应该在每次回发中重新创建(正确)动态控件。我通常在InitLoadViewState中重新创建它们。

另请参阅this

0

用户控件不能被实例化我做的方式。还有另一种方法来做到这一点。这就是使用Page_LoadControl方法。

相关问题