2008-11-11 3 views
1

일부 중첩 데이터 목록 컨트롤로 작업하고 있으며 중첩 저장 프로 시저의 SP 매개 변수를 가져올 수 없습니다.저장 프로 시저 매개 변수를 사용하는 중첩 데이터 목록

디버그에서 볼 수있는 SqlDataSource2.SelectParameters.Add ("Section", oLabel.Text.ToString()); 레이블에서 올바른 값을 얻고 있지만 결과가 표시되면 항상 마지막 매개 변수에 대한 결과가 추가됩니까?

중첩 된 데이터 목록이 바인딩 될 때마다 매개 변수를 지워야한다고 추측합니다. 그러나 매개 변수를 지정하지 않은 오류가 발생하는 코드를 추가하면 어떻게됩니까?

내 코드가 아래에있다면, 결국에는 서로 중첩 된 3 명의 데이터리스트가 있음을 알게 될 것입니다. 어떤 제안

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="nhscsharprepeater._Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 


<%@ Import Namespace="System.Web" %> 
<%@ Import Namespace="System.Web.UI" %> 
<%@ Import Namespace="System.Data" %> 

<script type="text/C#" runat="server"> 





    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) 
    { 

     DataList oList = (DataList)e.Item.FindControl("Datalist2"); 
     Label oLabel = (Label)e.Item.FindControl("lblSection"); 

     DataList oList2 = (DataList)oList.FindControl("Datalist3"); 


     SqlDataSource2.SelectParameters.Clear();   
     SqlDataSource2.SelectCommand = "report_DistinctSubSections"; 
     SqlDataSource2.SelectParameters.Add("Section",oLabel.Text.ToString()); 



     oList.DataBind(); 

    } 



</script> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:productfolioConnectionString %>" 
      SelectCommand="report_DistinctSection" SelectCommandType="StoredProcedure"></asp:SqlDataSource> 
     <asp:SqlDataSource ID="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:productfolioConnectionString %>" 
      SelectCommandType="StoredProcedure"> 

      <SelectParameters> 
       <asp:Parameter Name="Section" Type="String" /> 
      </SelectParameters> 

      </asp:SqlDataSource> 
     <asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:productfolioConnectionString %>" 
      SelectCommand="report_getReports" SelectCommandType="StoredProcedure"> 
      <SelectParameters> 
       <asp:Parameter Name="SubSection" Type="String" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 
      <asp:DataList ID="DataList1" runat="server" DataSourceID="SqlDataSource1" RepeatColumns="2" RepeatDirection="Horizontal" OnItemDataBound="DataList1_ItemDataBound"> 
        <ItemTemplate> 

          <asp:Label Runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Section") %>' ID="lblSection"> 
          </asp:Label> 

          <br /> 

          <asp:datalist id="Datalist2" runat="server" DataSourceID="SqlDataSource2">       
            <ItemTemplate> 

               <asp:Label Runat="server" text='<%# DataBinder.Eval(Container.DataItem, "SubSection") %>' ID="lblSection"> 
               </asp:Label>          

               <br /> 

                <asp:datalist id="Datalist3" runat="server" DataSourceID="SqlDataSource3">       
                  <ItemTemplate> 

                     <!--<asp:Label Runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Report") %>' ID="lblSection"> 
                     </asp:Label>-->                 

                  </ItemTemplate> 
                </asp:datalist>             


            </ItemTemplate> 
          </asp:datalist> 



       </ItemTemplate> 
      </asp:DataList> 
    </div> 
    </form> 
</body> 
</html> 

답변

1

하나에 대한

덕분에 Add를 호출하기 전에 SqlDataSource2.SelectParametersClear를 호출하면 트릭을 할 수 있음을 추측 할 수 있습니다.

+0

감사 데이빗, 내가 그 일을 소스에서 볼 수 있습니다 : SqlDataSource2.SelectParameters.Clear(); 감사합니다. Kieran –

관련 문제