将值绑定到用户控件但它返回null

时间:2014-09-13 08:15:11

标签: c# asp.net

在我的webfrom中,我有一个转发器,它从Web服务获取一些项目信息,输出是列表。

<asp:Repeater ID="Repeater1" runat="server">
 <ItemTemplate>
          <uc1:ItemDetailsUserControl runat="server" ID="ItemDetailsUserControl1"  HotelCode='Eval("Item.Code")' CityCode='<%#Eval("City.Code")%>'/>
</ItemTemplate>

要获取每个项目的详细信息,我在我的usercontrol中有这个定义 - ItemDetailsUserControl,

    public string ItemCode { set; get; }
    public string CityCode { set; get; }

这是后面的用户控制代码,

    protected void Page_Load(object sender, EventArgs e)
    {
       //do some stuff 
       response.write(ItemCode); //null
       response.write(CityCode); //null
    }

问题在于转发器中的绑定。当我得到eval时它只返回值,但当我将它作为属性传递时,它返回null值。

1 个答案:

答案 0 :(得分:2)

您每年都会获得属性的值 - 在Page_Load事件中,转发器控件尚未填充数据。一种可能的解决方案是将代码移至Page_PreRender event

检索和使用resp的示例。可以在此处找到更改绑定到转发器的数据:http://runnable.com/UjMj269qAWwQAAB3/asp-net-how-to-use-repeater

要匹配给定示例中的大小写,请将此代码添加到现有代码中:

protected void Page_PreRender(object sender, EventArgs e)
{
    if (lstEmployees.Count > 0)
    {
      lstEmployees.First().FirstName = "Test";
      rptEmployees.DataSource = lstEmployees;
     //You need to rebind the repeater
      rptEmployees.DataBind();
    }
}

private List<Employee> lstEmployees = new List<Employee>();

输出:http://runnable.com/VBQHUzNw-OxoDUWX/output