UserControl无法正确呈现

时间:2014-09-10 17:33:19

标签: c# asp.net user-controls telerik rendering

我有两个UserControl和一个View。我有一个带有按钮的网格,单击该按钮时,将对象发送到父(视图),然后使用该对象更新第二个控件。我的问题是,当我调试它时,一切都很好,但一旦页面再次呈现,我的第二个UserControl仍然不可见,文本框仍为空。

第一个UserControl称为ctrlMyRoster ASCX:

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
<telerik:RadGrid ID="radgMyRosters" CssClass="radgMyRosters" runat="server" AllowPaging="True" AllowSorting="true" AutoGenerateColumns="False" OnItemCommand="radgMyRosters_ItemCommand">
    <MasterTableView>
        <Columns>
            <telerik:GridBoundColumn DataField="RosterName" HeaderText="RosterName" DataType="System.String" UniqueName="RosterName">
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn HeaderStyle-CssClass="grid-header" HeaderStyle-Width="51px" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
                <ItemTemplate>
                    <asp:Button ID="btnEditRoster" runat="server" CssClass="btnGreen" CommandName="Edits" Text="Edit"></asp:Button>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>
</telerik:RadGrid>

ctrlMyRoster CodeBehind

protected void Page_Load(object sender, EventArgs e)
{
    radgMyRosters.DataSource = lstUsersCurrentRoster;
}

public event EventHandler EditButtonClicked;

private void OnEditButtonClick(int RowSelected)
{
    if (EditButtonClicked != null)
    {
        EditButtonClicked(lstUsersCurrentRoster[RowSelected], EventArgs.Empty);
    }
}

protected void radgMyRosters_ItemCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
{
    if (e.CommandName == "Edits")
    {
        OnEditButtonClick(e.Item.ItemIndex);
    }
}

第二个UserControl ctrlRosterDetail ascx

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

<asp:Label ID="lblName" runat="server"> Name: </asp:Label><asp:TextBox ID="txtRosterName" runat="server" ></asp:TextBox>

ctrlRosterDetail CodeBehind

protected void Page_Load(object sender, EventArgs e)
{
   //Empty
}

ViewMyRoster ascx:

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<%@ Register Src="UserControls/ctrlMyRosters.ascx" TagName="ctrlMyRosters" TagPrefix="MyControls" %>
<%@ Register Src="UserControls/ctrlRosterDetails.ascx" TagName="ctrlrosterdetails" TagPrefix="MyControls" %>
<telerik:RadAjaxPanel runat="server" ID="rapCreateWindowContainer" LoadingPanelID="ralpLoadingPanel"> 
    <aau:ctrlMyRosters ID="ctrlMyRosters1" runat="server" />
    <aau:ctrlrosterdetails ID="ctrlRosterDetails1" runat="server" Visible="False" />
</telerik:RadAjaxPanel>

ViewMyRoster CodeBehind

protected void Page_Load(object sender, EventArgs e)
{
    ctrlMyRosters1.EditButtonClicked += new EventHandler(ctrlMyRosters1_EditButtonClicked);
}

private void ctrlMyRosters1_EditButtonClicked(object sender, EventArgs e)
{
    ((TextBox)ctrlRosterDetails1.Controls[0]).Text = ((EventRoster)sender).Name;
    ctrlRosterDetails1.Visible = true;
}

我错过了什么吗?也许这与.Net页面生命周期有关?

也许我应该使用不同的方法?我想要做的就是将信息从第一个UserControl传递到第二个UserControl。

0 个答案:

没有答案