2012-10-16 56 views
1

我目前有一个datareader作为我的数据源绑定到中继器。因为在这里看到:中继器控制返回null

Try 
      myConnection.Open() 
      sqlCommand = New SqlCommand(sqlText, myConnection) 
      dr = sqlCommand.ExecuteReader(CommandBehavior.CloseConnection) 
      cropPlanRepeater.DataSource = dr 
      cropPlanRepeater.DataBind() 
Catch ex As Exception 

End Try 

这将启动数据绑定的情况下,像这样:

Public Sub CropPlanRepeater_ItemDataBound(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles cropPlanRepeater.ItemDataBound 

    Dim rptI As RepeaterItem = e.Item 
    Dim AmttoSell = TryCast(rptI.FindControl("amtToSell"), Label) 
    AmttoSell.Text = AmttoSell 
End Sub 

出于某种原因,这FindControl方法,不断“回零”或“无”我想看看如果在我的控制层面和缺乏控制层面上存在缺陷,但我找不到任何东西。

这里有一个看看它是如何工作的HTML:

<asp:Repeater ID="cropPlanRepeater" runat="server" Visible="false"> 
      <HeaderTemplate> 
       <tr align="center" class="top-rpt-head"> 
        <th scope="col"> 
         Crop 
        </th> 
        <th scope="col"> 
         Production 
        </th> 
        <th scope="col"> 
         Amount to Sell 
        </th> 
        <th scope="col"> 
         Breakeven 
        </th> 
        <th scope="col"> 
         Target Price 
        </th> 
        <th scope="col"> 
         Target Revenue 
        </th> 
        <th scope="col"> 
         Feed Value 
        </th> 
        <th scope="col"> 
         Other Income 
        </th> 
        <th scope="col"> 
         Expenses 
        </th> 
        <th scope="col"> 
         Profit 
        </th> 
       </tr> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <tr align="center"> 
        <td> 
        <!--- this needs to be fixed- incorrect methodology(should be done in the codebehind)-----> 
         <%# (DataBinder.Eval(Container.DataItem, "Crop_Name"))%> 
        </td> 
        <td> 
        <!--- this needs to be fixed- incorrect methodology(should be done in the codebehind)-----> 
         <%# (DataBinder.Eval(Container.DataItem, "Acres_D") * DataBinder.Eval(Container.DataItem, "Yield_D") + DataBinder.Eval(Container.DataItem, "Acres_I") * DataBinder.Eval(Container.DataItem, "Yield_I"))%> 
        </td> 
        <td> 

        </td> 
       </tr> 
        <asp:label runat="server" ID="AmtToSell"></asp:Label> 

        <asp:Literal runat="server" ID="Yield_I" Text='<%#Eval("Yield_I") %>' Visible="false" /> 
        <asp:Literal runat="server" ID="Yield_D" Text='<%#Eval("Yield_D") %>' Visible="false" /> 
        <asp:Literal runat="server" ID="Acres_I" Text='<%#Eval("Acres_I") %>' Visible="false" /> 
        <asp:Literal runat="server" ID="Acres_D" Text='<%#Eval("Acres_D") %>' Visible="false" /> 
        <asp:Literal runat="server" ID="Storage" Text='<%#Eval("Storage") %>' Visible="false" /> 
        <asp:Literal runat="server" ID="Fed" Text='<%#Eval("Fed") %>' Visible="false" /> 
        <asp:Literal runat="server" ID="Bartered" Text='<%#Eval("Bartered") %>' Visible="false" /> 
        <asp:Literal runat="server" ID="Profit_I" Text='<%#Eval("ProfAcre_I") %>' Visible="false" /> 
        <asp:literal runat="server" ID="Profit_D" Text='<%#Eval("ProfAcre_D") %>' Visible="false" />   
      </ItemTemplate> 
     </asp:Repeater> 

我试图把标签内和表外,并没有用。我不确定我的HTML或代码隐藏是否存在问题。我需要通过代码隐藏中的计算来操作标签“amttosell”。 (我会做这样的事情amttosell.text = 从数据库中获取的数据进行一些计算/上隐藏的标签上面

任何帮助发布将不胜感激。

回答