在我的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值。
答案 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>();