UserControl 不显示公开控件的值

UserControl doesn't display the values of the exposed controls

我有一个用户控件:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="StratPlan.Main.UserCons.WebUserControl1" %>

<div>
    <table>
        <tr>
            <td>title: </td>
            <td>
                <asp:TextBox ID="TitleTextBox" runat="server"/>
            </td>
        </tr>
        <tr>
            <td>strategy id: </td>
            <td>
                <asp:TextBox ID="StrategyIdTextBox" runat="server"/>
            </td>
        </tr>
        <tr>
            <td>company: </td>
            <td>
                <asp:TextBox ID="CompanyTextBox" runat="server"/>
            </td>
        </tr>
    </table>
</div>

在其后面的代码中:

public partial class WebUserControl1 : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        TitleTextBox.Text = ExpTitle;
        StrategyIdTextBox.Text = ExpStrategyId;
        CompanyTextBox.Text = ExpCompany;
    }

    public string ExpTitle
    {
        get { return this.TitleTextBox.Text; }
    }

    public string ExpStrategyId
    {
        get { return this.StrategyIdTextBox.Text; }
    }

    public string ExpCompany
    {
        get { return this.CompanyTextBox.Text; }
    }

}

然后在我的页面中,我有一个列表视图:

<div>
    <asp:ListView ID="ListView1" runat="server">
        <ItemTemplate>
            <uc1:WebUserControl1 runat="server" ID="WebUserControl1" ExpStrategyId='<%# Bind(StrategyId) %>' ExpTitle='<%# Bind(Title) %>' ExpCompany='<%# Bind(CompanyName) %>'/>
        </ItemTemplate>
    </asp:ListView>
</div>

我在后面的代码中像这样绑定数据源:

public void LoadGridView()
{
    localVm.EntityList = localVm.RetrieveMany(localVm.SearchItem);
    ItemsGridView.AutoGenerateColumns = false;
    ListView1.DataSource = localVm.EntityList;
    ListView1.DataBind();
}

但是每当我转到我的页面时,它都不会为用户控件提供值。我做错了什么?

页面 Load 事件在数据绑定控件绑定到它们的数据之前被调用。像这样将其更改为 PreRenderCompleteRender

public partial class WebUserControl1 : System.Web.UI.UserControl
{
    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
        TitleTextBox.Text = ExpTitle;
        StrategyIdTextBox.Text = ExpStrategyId;
        CompanyTextBox.Text = ExpCompany;
    }
    ...
}

看看ASP.NET Page Life Cycle Overview