页面上是用的repeater绑定的数据,其中有一项是直接输出后台cs类的变量的值,这个变量是在类中定义的,值在repeater的ItemDataBound事件中获得,但是现在的问题是显示在页面上的值不是每条数据绑定后获得的那个对应的值,我调试跟踪的时候发现代码运行时每个值都是对应得到了的,但是循环完显示在页面上就不对了,所有行都显示的其中某一项绑定后得到的值,这是为什么,要怎么办?
repeater部分代码:
<asp:Repeater ID="rptHouseListS" runat="server" OnItemDataBound="rptHouseListS_ItemDataBound">
    <HeaderTemplate>
    <table width="100%" border="1" cellspacing="0" cellpadding="4" class="houseList">
    </HeaderTemplate>
    <ItemTemplate>
    <tr class="tr_b">
    <td align="center"><input type="hidden" name="houseId" value="<%#DataBinder.Eval(Container.DataItem,"HouseId")%>"><%#DataBinder.Eval(Container.DataItem,"NumId")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem,"InId")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem,"Estate")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem,"Type")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem,"Construction")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem,"Floor")%>/<%#DataBinder.Eval(Container.DataItem,"TotalFloor")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem, "Area", "{0:F2}")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem, "UnitPrice", "{0:c}")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem, "Price", "{0:c}")%></td>
    <td align="center"><%#DataBinder.Eval(Container.DataItem,"AddTime","{0:d}")%></td>
    <td align="center"><%=StrPubTime %></td>
    </tr>
    </ItemTemplate>
    <FooterTemplate>
        </table>
    </FooterTemplate>
    </asp:Repeater>
ItemDataBound事件部分代码:
protected void rptHouseListS_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Guid HouseId = ((Model.HouseSellInfo2)e.Item.DataItem).HouseId;
                Guid AgentId = Guid.Parse(Request.Cookies["loginInfo"]["UserId"]);                HousesPubedAction bllPubed = new HousesPubedAction();
                HousePubedInfo pubInfo = bllPubed.GetModelByCache(HouseId, AgentId);
                StrPubTime = pubInfo != null ? pubInfo.LastUpdateTime.ToShortDateString() : "未发布";            }
        }
StrPubTime是在这里定义的:
public partial class HouseList : System.Web.UI.Page
    {
        public string StrPubTime = "";

解决方案 »

  1.   

    public string StrPubTime = ""; 全局ItemDataBound 所有数据绑定后触发所以StrPubTime 这个值是一个值 你试着在Repeater1_ItemCreated里写或者就是创建每个item的时候绑一次
      

  2.   

    ++++ 创建每个item的时候绑一次
      

  3.   

    gridview可以那就换个方法吧你是不是要根据每一行的值 计算出一列的值 绑定到这一列的后面还是这一列的值都一样?
      

  4.   

    嗯,也不知道是这全局变量怎么回事,我换方法解决了,不用这全局变量来记录这个值,直接在控件里加个label显示算了,本来是想少用点控件的,懒得折腾了