2015-03-11 4 views
0

Я использую хранимую процедуру для загрузки данных в моем gridview. Основываясь на выборе пользователя, он/она должен иметь возможность просматривать данные в gridview в asp.net либо подробный объем продаж всех арендаторов в одном месте, либо общий общий объем продаж этого местоположения.C# - динамически загружать данные из хранимой процедуры в gridview

Это означало бы изменение столбца поля.

Для PER ПОДРОБНЫЙ:

tenantcode tenantname, местоположение, валовые продажи

enter image description here

Для TOTAL на место:

Места, Гросс продаж (с использованием группы пункта для достижения этого)

enter image description here

В хранимой процедуре, все работает отлично, конечно, но в asp.net, за подробный вариант работает, но когда я выбираю следующий вариант, который по всем продажам на место производит эту ошибку:

A field or property with the name 'tenantcode' was not found on the selected data source.

Markup:

<asp:GridView ID="grdMarketingReport1" runat="server" BackColor="White" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" ForeColor="Black" GridLines="Vertical" Font-Size="Smaller" EmptyDataText="No Records Found" ShowHeaderWhenEmpty="True" Width="100%" AutoGenerateColumns="false"> 
    <EmptyDataRowStyle BackColor="white" ForeColor="black" /> 
    <EmptyDataTemplate>No Data Found.</EmptyDataTemplate> 
    <AlternatingRowStyle BackColor="White" /> 
    <Columns> 
     <asp:BoundField HeaderText="RP Code" DataField="tenantcode" /> 
     <asp:BoundField HeaderText="Retail Partner" DataField="name" /> 
     <asp:BoundField HeaderText="Location" DataField="locationd" /> 
     <asp:BoundField HeaderText="Gross Sales" DataField="gs" /> 
    </Columns> 
    <FooterStyle BackColor="#CCCC99" /> 
    <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" Height="25px" /> 
    <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" /> 
    <RowStyle BackColor="#F7F7DE" /> 
    <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" /> 
    <SortedAscendingCellStyle BackColor="#FBFBF2" /> 
    <SortedAscendingHeaderStyle BackColor="#848384" /> 
    <SortedDescendingCellStyle BackColor="#EAEAD3" /> 
    <SortedDescendingHeaderStyle BackColor="#575357" /> 
</asp:GridView> 

Я на самом деле думает о создании двух различных GridView, чтобы удовлетворить свои потребности, но это наименее вариант, если он не является единственным способом. МОЖЕТ БЫТЬ СДЕЛАТЬ В ОДНОМ ГРИДЖЕЛЕ ТОЛЬКО?

ХП (ЧАСТЬ АКТУАЛЬНОГО SP)

if (@RP = 'ALL' and @Location = 'ALL' and @Business = 'ALL') 
begin 




     --step 1: get the sales per date  
      SELECT a.tenantcode , b.name , a.location , c.locationd , d.[desc] as 'Business' , a.date , a.gsc, b.sdate , b.cdate 
      into #Sample5 
      FROM DAILYMOD a INNER JOIN TENANT b on a.tenantcode = b.tenantcode 
          INNER JOIN LOCATION c on b.location = c.location 
          INNER JOIN BUSINESS d on b.business = d.code 

       WHERE ((a.date between @DateFrom1 and @DateTo1) 
        or (a.date between @DateFrom2 and @DateTo2) 
        or (a.date between @dateFromLY and @dateToLY)) 


      ORDER BY a.location , a.tenantcode , a.date 



     --step 2: group the gsc per date ranges 
      select tenantcode , name, location, locationd, business , sdate, cdate, 

      SUM(case when date between @DateFrom1 and @DateTo1 then [gsc] else 0 end) 'date1', 
      SUM(case when date between @DateFrom2 and @DateTo2 then [gsc] else 0 end) 'date2', 
      SUM(case when date between @dateFromLY and @dateToLY then [gsc] else 0 end) 'dateLY' 
      from #Sample5 
      GROUP BY tenantcode , name, location, locationd , business, sdate, cdate 





end 




else 
begin 

     --step 1: get the sales per date  
      SELECT a.tenantcode , b.name , a.location , c.locationd , d.[desc] as 'Business' , a.date , a.gsc, b.sdate , b.cdate 
      into #Sample7 
      FROM DAILYMOD a INNER JOIN TENANT b on a.tenantcode = b.tenantcode 
          INNER JOIN LOCATION c on b.location = c.location 
          INNER JOIN BUSINESS d on b.business = d.code 

       WHERE ((a.date between @DateFrom1 and @DateTo1 ) 
        or (a.date between @DateFrom2 and @DateTo2) 
        or (a.date between @dateFromLY and @dateToLY)) 


      ORDER BY a.location , a.tenantcode , a.date 



     --step 2: group the gsc per date ranges 
      select location, locationd, 

      SUM(case when date between @DateFrom1 and @DateTo1 then [gsc] else 0 end) 'date1', 
      SUM(case when date between @DateFrom2 and @DateTo2 then [gsc] else 0 end) 'date2', 
      SUM(case when date between @dateFromLY and @dateToLY then [gsc] else 0 end) 'dateLY' 
      from #Sample7 
      GROUP BY location, locationd 




end 
+0

Привет! Неужели нужно кричать? А также включить всю разметку gridview, все ли здесь связано с вопросом? – abatishchev

+0

Я так думаю, чтобы дать подробное объяснение этой проблеме. – rickyProgrammer

+0

Вам не нужны стили на самом деле, просто столбцы. Я бы удалил все несвязанное, чтобы помочь читателю сосредоточиться на проблеме привязки. – abatishchev

ответ

1

В вашей процедуре магазина else часть шаг-не возвращает tenantcode

--step 2: group the gsc per date ranges 
      select location, locationd, 

      SUM(case when date between @DateFrom1 and @DateTo1 then [gsc] else 0 end) 'date1', 
      SUM(case when date between @DateFrom2 and @DateTo2 then [gsc] else 0 end) 'date2', 
      SUM(case when date between @dateFromLY and @dateToLY then [gsc] else 0 end) 'dateLY' 
      from #Sample7 
      GROUP BY location, locationd 

попытаться вернуть этот столбец тоже и проверить его ,

UPDATE:

--step 2: group the gsc per date ranges 
       select '' AS tenantcode ,location, locationd, 

       SUM(case when date between @DateFrom1 and @DateTo1 then [gsc] else 0 end) 'date1', 
       SUM(case when date between @DateFrom2 and @DateTo2 then [gsc] else 0 end) 'date2', 
       SUM(case when date between @dateFromLY and @dateToLY then [gsc] else 0 end) 'dateLY' 
       from #Sample7 
       GROUP BY location, locationd 
+0

, который намерен группировать или получать общий объем продаж в одном месте. см. изображение таблицы. – rickyProgrammer

+0

Да, но в вашем gridview у вас есть ссылка на этот столбец, а у источника данных нет этого столбца, поэтому он бросает исключение. @rickyProgrammer –

+0

вы можете добавить «tenantcode» в предложение select и groupby. он все равно будет группировать его[email protected] –

Смежные вопросы