Показать несколько строк в уже определенных столбцах gridview - PullRequest
0 голосов
/ 26 июня 2019

У меня есть следующий gridview:

<asp:GridView ID="gvTimeline" ShowHeader="true"  runat="server" ShowHeaderWhenEmpty="true" AutoGenerateColumns="false" >
<Columns>
         <asp:BoundField DataField="8" ItemStyle-Width="25%" DataFormatString="{0:dd-MM-yyyy}" />
         <asp:BoundField DataField="2" ItemStyle-Width="25%" DataFormatString="{0:dd-MM-yyyy}" />
         <asp:BoundField DataField="6" ItemStyle-Width="25%" DataFormatString="{0:dd-MM-yyyy}" />
         <asp:BoundField DataField="4" ItemStyle-Width="25%" DataFormatString="{0:dd-MM-yyyy}" />
</Columns>
</asp:GridView>

И следующая таблица sql:

Id   |  type  |  date

2    |    8   |  22/09/1997   
1    |    6   |  22/09/1998   
3    |    4   |  22/09/1999

Я хочу запустить строки sql и заполнить каждый столбец датойсоответствующий типу (только 1 строка).Каждое поле данных является типом.Каков наилучший способ сделать это, позже получить нормальный доступ к каждому идентификатору?

Я ожидал этого:

8                 2                 6              4
22/09/1997      null          22/09/1998       22/09/1999

1 Ответ

0 голосов
/ 27 июня 2019

Если вы ограничиваетесь только этими значениями, то создание простого представления и привязка к это может быть самым простым способом. Например:

CREATE VIEW view_for_gridview_binding AS
  SELECT DISTINCT
    eight.[date] as '8'
    , two.[date] as '2'
    , six.[date] as '6'
    , four.[date] as '4'
  FROM table_for_gridview_question 
  LEFT JOIN table_for_gridview_question AS eight ON (eight.[type] = 8)
  LEFT JOIN table_for_gridview_question AS two ON (two.[type] = 2)
  LEFT JOIN table_for_gridview_question AS six ON (six.[type] = 6)
  LEFT JOIN table_for_gridview_question AS four ON (four.[type] = 4)
GO

Вот тест:

CREATE TABLE table_for_gridview_question (
    Id int NOT NULL,
    [type] int NOT NULL,
    [date] date NOT NULL
)
GO

INSERT INTO table_for_gridview_question
SELECT 2, 8, '1997-09-22'
UNION
SELECT 1, 6, '1998-09-22'
UNION
SELECT 3, 4, '1999-09-22'
GO

CREATE VIEW view_for_gridview_binding AS
    SELECT DISTINCT
        eight.[date] as '8'
        , two.[date] as '2'
        , six.[date] as '6'
        , four.[date] as '4'
    FROM table_for_gridview_question 
    LEFT JOIN table_for_gridview_question AS eight ON (eight.[type] = 8)
    LEFT JOIN table_for_gridview_question AS two ON (two.[type] = 2)
    LEFT JOIN table_for_gridview_question AS six ON (six.[type] = 6)
    LEFT JOIN table_for_gridview_question AS four ON (four.[type] = 4)
GO

SELECT * FROM view_for_gridview_binding

DROP VIEW view_for_gridview_binding
DROP TABLE table_for_gridview_question

Результаты SELECT:

8          2          6          4
---------- ---------- ---------- ----------
1997-09-22 NULL       1998-09-22 1999-09-22

Если, однако, ваши type могут быть чем угодно, вы можете подумать о чтении на PIVOT и UNPIVOT, как описано в части Dynamic Pivot Version части ответа здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...