我有两个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。