ASP.net boundcolumn для отображения продуктов в каждом месяце года

#asp.net #sql #sql-server #vb.net

#asp.net #sql #sql-сервер #vb.net

Вопрос:

Я постараюсь быстро объяснить свою проблему и предоставить необходимые данные, чтобы, надеюсь, получить некоторую помощь по этому вопросу… Вот что я пытаюсь встроить ASP.net:

попытка сформировать

По сути, это просто список продуктов и количество проданных каждый месяц… До сих пор я выяснил, как использовать asp.net и его свойство «BoundField» для создания первой записи:

привязка к базе данных из asp.net

Мой запрос выглядит следующим образом:

 SELECT year, product_id, t.id AS id, 
 t.standardcase AS standardcase,
 p.shortname AS shortname 
 FROM transactions t, products p 
 WHERE year = 2009 AND product_id = p.ID AND market_id = 1 AND product_id = 1"
  

и моя структура таблицы выглядит следующим образом:

  CREATE TABLE [dbo].[products](     
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [name] [varchar](30) NOT NULL,  
    [shortname] [varchar](15) NULL,
    [SKU] [varchar](50) NULL,   
    [ml] [smallint] NOT NULL,   
    [category]
    [varchar](50) NOT NULL,     
    [status] [bit] NOT NULL)

 CREATE TABLE [dbo].[transactions](     
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [market_id] [int] NOT NULL,     
    [product_id] [int] NOT NULL,    
    [month] [tinyint] NOT NULL,     
    [year] [smallint] NOT NULL,     
    [standardcase] [int] NOT NULL,  
    [ninelitercase] [int] NOT NULL,     
    [userid] [nchar](10) NULL,
    [timestamp] [nchar](10) NULL)
  

Итак, для данного года необходимо отобразить / отредактировать 120 количеств…

Вот код, который я использую для привязки к данным:

 <%@ Page Language="VB" %>
<html>
  <head id="Head1" runat="server">
    <title>Updating Data Using GridView</title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:GridView ID="GridView1" AllowSorting="false" AllowPaging="false" Runat="server"
        DataSourceID="SqlDataSource1" AutoGenerateEditButton="true" DataKeyNames="id"
        AutoGenerateColumns="False">
        <Columns>
          <asp:BoundField ReadOnly="true" HeaderText="Products" DataField="shortname" SortExpression="shortname" />

            <asp:BoundField HeaderText="January" DataField="standardcase" SortExpression="standardcase" />            
        </Columns>
      </asp:GridView>
      <asp:SqlDataSource ID="SqlDataSource1" Runat="server" SelectCommand="SELECT year, product_id, t.id as id, t.standardcase as standardcase, p.shortname as shortname from transactions t, products p where year = 2009 and product_id = p.ID and market_id = 1 and product_id = 1 and month = 1"
        UpdateCommand=""
        ConnectionString="<%$ ConnectionStrings:myConnectionString %>" />
    </form>
  </body>
</html>
  

Может кто-нибудь пролить свет на то, как использовать BoundField для «построения» месяцев в верхней части? Каждое поле имеет уникальный идентификатор, чтобы упростить обновление, но мне просто нужно выяснить, как в ASP.net чтобы легко заполнить остальные поля?

Комментарии:

1. попробуйте посмотреть на эти примеры: quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/data /…

2. Спасибо, вот откуда я получил начальную функциональность BoundField… Разница с моей ситуацией заключается в том, что у меня нет отдельных «столбцов» для каждого BoundField… По сути, у меня есть один набор записей, который я пытаюсь охватить за двенадцатимесячный период…

3. Что вы ожидаете, что произойдет при обновлении этого? Если у вас есть, например, 10 транзакций в январе 2009 года для данного продукта, это будет равно 10 записям в таблице транзакций, если пользователь изменит это значение на 9, какие из 10 записей следует удалить? Я не думаю, что вы можете отобразить сводку, а также сделать ее доступной для обновления.

4. Привет, Гарет, существует однозначное соотношение между количествами и уникальными идентификаторами… Каждая транзакция имеет уникальную запись, которая постоянно обновляется… Например, если вы посмотрите на верхнюю диаграмму, FRSB за январь 2009 года имеет transaction.id из 1… таким образом, оператор update всегда будет обновлять эту одну запись… Имеет ли это смысл? По умолчанию для всех количеств установлено значение ноль… Поэтому очевидно, что при первом запуске формы все поля должны быть равны 0.