首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ItemDataBound不点火

ItemDataBound不点火
EN

Stack Overflow用户
提问于 2014-01-10 11:12:45
回答 1查看 7K关注 0票数 2

出于某种原因,我的中继器上的项目数据库没有发射。我想不出原因。这是我所拥有的;(移除不必要的东西)

C#页面代码:

代码语言:javascript
复制
 protected void Page_Load(object sender, EventArgs e)
        {

            load_Repeater();
        }

        private void load_Repeater()
        {
            dtLocations = new components.db.PIDSDB.SubPIDLocationsItemsDataTable();
            dtLocations = taLocations.GetLocationsByProductsAndSPID('1', Convert.ToInt32(Request.QueryString["SPID"]));

            rptFire.DataSource = dtLocations;
            rptFire.DataBind();

        }

        protected void rptFire_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {

            DataRowView nRow = null;

            switch (e.Item.ItemType)
            {
                case ListItemType.Item:
                case ListItemType.AlternatingItem:
                Int32 sqrmtr = Convert.ToInt32(nRow["LocationSqrMtr"].ToString());
                Int32 mypence = Convert.ToInt32(nRow["PricePerItem"].ToString());
                Int32 mandays = Convert.ToInt32(nRow["ManDayPerItem"].ToString());

                ((Label)e.Item.FindControl("lblName")).Text = "" + nRow["LocationName"];
                ((Label)e.Item.FindControl("lblArea")).Text = "" + nRow["LocationSqrMtr"];
                ((Label)e.Item.FindControl("lblCharge")).Text = ""+ Functions.MultiplyNumbers(sqrmtr, mypence);
                ((Label)e.Item.FindControl("lblPence")).Text = "" + nRow["PricePerItem"];
                ((Label)e.Item.FindControl("lblManDays")).Text = "" + Functions.MultiplyNumbers(sqrmtr, mandays);
                ((Label)e.Item.FindControl("lblCosts")).Text = "WORK OUT";
                ((Label)e.Item.FindControl("lblMargin")).Text = "WORK OUT";

                    break;
            }
        }

中的.aspx页面中继器代码:

代码语言:javascript
复制
   <asp:Repeater runat="server" ID="rptFire" OnItemDataBound="rptFire_ItemDataBound">
       <ItemTemplate>
          <tr>
              <td><asp:Label runat="server" ID="lblName"></asp:Label></td>
              <td><asp:Label runat="server" ID="lblArea"></asp:Label></td>
              <td><asp:Label runat="server" ID="lblCharge"></asp:Label></td>
              <td><asp:Label runat="server" ID="lblPence"></asp:Label></td>
               <td><asp:Label runat="server" ID="lblManDays"></asp:Label></td>
               <td><asp:Label runat="server" ID="lblCosts"></asp:Label></td>
               <td><asp:Label runat="server" ID="lblMargin"></asp:Label></td>
            </tr>
          </ItemTemplate>
        </asp:Repeater>

数据源和databind代码运行的不是项目数据库。

EN

回答 1

Stack Overflow用户

发布于 2014-01-13 10:27:57

您可能在aspx文件的页头中缺少AutoEventWireup=true

编辑:--如果按钮处理程序确实有效,那么可能是数据库的问题--您确定是在MyRepeater上调用DataBind还是它的父控件?如果您正在手动调用DataBind,它是否依赖于页面上的Page.IsPostBack

ItemDataBound只会在DataBinding期间开火。如果你在PostBack上做了一个PostBack,它应该会触发。然而,DataBind不会自动发生在PostBack上。(相反,Repeater将从ViewState进行重建。)如果不依赖于数据,则应考虑使用ItemCreated事件。这将在构建Repeater时触发,无论是在DataBind期间还是从ViewState。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21042857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档