UserControl不显示暴露控件的值

本文关键字:控件 暴露 显示 UserControl | 更新日期: 2023-09-27 18:17:20

我有一个用户控件:

<%@ 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();
}

但是无论何时我进入我的页面,它都不会给用户控件这个值。我做错了什么?

UserControl不显示暴露控件的值

在数据绑定控件绑定到它们的数据之前调用pages 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页面生命周期概述