2012-01-05 13 views
0

私は4列のDataGridと5列のDataListを持っています。 DataListは、別の別の列としてDataGrid内に存在します。 データグリッドの最初の行にデータリストの内容が表示されないことを除いて、すべてがうまくいきます。データを正しく表示するためには、データリスト内のすべてを1行だけ押し上げる必要があります。DataGridの最初の行にDataListデータが入力されていません

データグリッドの対応する最初の行のデータリストでデータが正常に出力されているが、データグリッドの最初の行に表示されていないことを確認しました(デバッグ中)。それは、DataGridの2番目の行でレンダリングされ始めます。

私はマークアップとコードビハインドを何度も繰り返してきましたが、これがなぜ起こっているのか理解できません。どんな助けもありがとう。

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="referrals.ascx.cs" Inherits="dpbrokers.dpbrokers.referrals" 
    TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %> 
<div align="center"> 
    <asp:Label ID="errormessage" runat="server" Visible="False" /></div> 
<asp:DataGrid ID="lstReferrals" runat="server" DataKeyField="ReferringAffiliateID" 
    AutoGenerateColumns="false" CellPadding="4" OnItemDataBound="lstReferrals_ItemDataBound"> 
    <AlternatingItemStyle Font-Size="9pt" CssClass="small" BackColor="#C2D6FA"></AlternatingItemStyle> 
    <ItemStyle Font-Size="9pt" CssClass="small" BackColor="White"></ItemStyle> 
    <HeaderStyle Font-Size="11pt" Font-Bold="True" ForeColor="White" BackColor="#ABACAD"> 
    </HeaderStyle> 
    <Columns> 
     <asp:TemplateColumn HeaderText="Referring Affiliate"> 
      <ItemTemplate> 
       <asp:HyperLink Text='<%# DataBinder.Eval(Container.DataItem, "ReferringAffiliateName") %>' 
        NavigateUrl='<%# EditURL("Referral",DataBinder.Eval(Container.DataItem, "ReferralID").ToString(),"Edit",0) %>' 
        runat="server" ID="Hyperlink1" /> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:TemplateColumn HeaderText="SkyCard Awarded"> 
      <ItemTemplate> 
       <asp:Label ID="itemAward" runat="server" Text='<%# IsAwarded(DataBinder.Eval(Container.DataItem, "IsAwarded").ToString()) %>' /> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
     <asp:BoundColumn DataField="DSMAffiliateName" HeaderText="District Sales Manager"> 
     </asp:BoundColumn> 
     <asp:BoundColumn DataField="DSMAffiliatePhone" HeaderText="DSM Phone"></asp:BoundColumn> 
     <asp:TemplateColumn> 
      <ItemTemplate> 
       <asp:DataList ID="DetailList" ItemStyle-CssClass="small" DataSource="<%# riReferrals %>" 
        runat="server" Width="100%"> 
        <HeaderTemplate> 
         <table width="100%" cellpadding="4" border="1"> 
          <tr bgcolor="#ABACAD" class="normalwhite"> 
           <td width="25%"> 
            Referral Name 
           </td> 
           <td width="20%"> 
            Phone Number 
           </td> 
           <td width="30%"> 
            Email 
           </td> 
           <td> 
            Referred On 
           </td> 
           <td> 
            Is Member? 
           </td> 
          </tr> 
        </HeaderTemplate> 
        <ItemTemplate> 
         <tr class="small"> 
          <td> 
           <asp:HyperLink Text='<%# DataBinder.Eval(Container.DataItem, "ContactName") %>' NavigateUrl='<%# EditURL("ReferralID",DataBinder.Eval(Container.DataItem, "ReferralID").ToString(),"Edit",0) %>' 
            runat="server" ID="Hyperlink2" /> 
          </td> 
          <td> 
           <%# FormatPhone(DataBinder.Eval(Container.DataItem,"Phone").ToString()) %> 
          </td> 
          <td> 
           <%# FormatForEmail(DataBinder.Eval(Container.DataItem, "Email").ToString())%> 
          </td> 
          <td> 
           (<%# DataBinder.Eval(Container.DataItem,"Created", "{0:g}") %>) 
          </td> 
          <td> 
           (<%# IsMember(DataBinder.Eval(Container.DataItem, "JoinedON").ToString())%>) 
          </td> 
         </tr> 
        </ItemTemplate> 
        <FooterTemplate> 
         </table> 
        </FooterTemplate> 
       </asp:DataList> 
       <div align="right"> 
        <asp:ImageButton ID="Button1" CommandName="award" ImageUrl="~/images/dpbbuttons/awardbutton.gif" 
         AlternateText="Award SkyCard" runat="server" /></div> 
      </ItemTemplate> 
     </asp:TemplateColumn> 
    </Columns> 
    <PagerStyle Mode="NumericPages"></PagerStyle> 
</asp:DataGrid> 

CODE BEHIND HTML

public ArrayList riReferrals; 


      protected void Page_Load(System.Object sender, System.EventArgs e) 
      { 
       if (!Page.IsPostBack) 
        LoadReferrals(); 
      } 


      private void LoadReferrals() 
      { 
       try 
       { 
        ReferralController objReferral = new ReferralController(); 
        lstReferrals.DataSource = objReferral.GetReferrals(); 
        lstReferrals.DataBind(); 
       } 
       catch (Exception ex) 
       { 
        Response.Write(ex); 

        CLogError clsLogError = new CLogError(ex, Request, Session, Context.User.Identity.Name); 
        clsLogError.LogError(); 
       } 
      } 

      public void lstReferrals_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e) 
      { 

       switch (e.Item.ItemType) 
       { 
        case ListItemType.Item: 
        case ListItemType.AlternatingItem: 
         lbl1 = (Label)e.Item.FindControl("itemAward"); 

         GetDtlReferrals(Convert.ToInt32(lstReferrals.DataKeys[e.Item.ItemIndex])); 

         button.Visible = true; 
         if (lbl1.Text.ToLower() == "No") 
          button.Attributes.Add("onClick", "javascript:return confirm(\'Are You Sure You Wish To Award a SkyCard to this Agent ?\');"); 
         else 
         { 
          button.ImageUrl = "~/images/dpbbuttons/revokebutton.gif"; 
          button.Attributes.Add("onClick", "javascript:return confirm(\'Are You Sure You Wish To Revoke the SkyCard Award for this Agent ?\');"); 
         } 

         break; 
       } 
      } 

      public ArrayList GetDtlReferrals(Int32 KeyField) 
      { 
       riReferrals = null; 

       try 
       { 
        // Obtain a list of discussion messages for the module 
        ReferralController objReferral = new ReferralController(); 
        riReferrals = objReferral.GetReferralsByAgentID(KeyField); 
       } 
       catch (Exception ex) 
       { 
        Response.Write(ex); 

        CLogError clsLogError = new CLogError(ex, Request, Session, Context.User.Identity.Name); 
        clsLogError.LogError(); 
       } 

       return riReferrals; 
      } 

答えて

0

がそれを手に入れた:

以下は私のコードです! GetDtlsReferrals方法において

、私が探していた表示データを生成した次のコードを追加:

DataList DetailList = (DataList)e.Item.FindControl("DetailList"); 
        DetailList.DataBind(); 
関連する問題