Невозможно заставить головы показывать только одну запись - PullRequest
1 голос
/ 08 марта 2012

Я снимаю некоторые записи, которые имеют COUNT от 0 или больше 1. Запрос работает и корректно обрабатывается и отлично смотрится в результатах SQL.Но я перебираю результаты и создаю заголовок, группирую их по странам и перечисляю имена пользователей для этой страны.

Это мой SQL:

SELECT * FROM (
SELECT u.ContactName
      ,cu.[User ID]
      ,c.Name
      ,c.ID
      ,cu.[Foreign Table]
      ,count(*) OVER (PARTITION BY c.ID) AS user_in_this_country
FROM   dbo.Country AS c
INNER JOIN   dbo.CountryUser AS cu ON c.ID = cu.[Foreign ID]
INNER JOIN   dbo.UserColder  AS  u ON cu.[User ID] = u.ID
WHERE  EXISTS (
    SELECT *
    FROM   CountryUser AS cu2
    WHERE  cu2.[Foreign ID] = cu.[Foreign ID]
    AND    cu2.[User ID] <> cu.[User ID]
    AND    cu2.[Foreign Table] = 'Country')
    )
    t
    WHERE user_in_this_country > 1 or user_in_this_country = 0
    ORDER BY Name ASC

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

Justin United States 2
Bob United States 2

Тогда мой метод для цикла и добавить заголовки / группу:

string lastValue = "";
protected string AddGroupingHeader(string Value)
{


    //Get the data field value of interest for this row 
    string currentValue = Value;


    //Specify name to display if dataFieldValue is a database NULL 
    if (currentValue.Length == 0)
    {
        currentValue = "";
    }


    //See if there's been a change in value 
    if (lastValue != currentValue)
    {
        //There's been a change! Record the change and emit the header 
        lastValue = currentValue;
        return "<div style='float: left; font-size: 16px; margin: 10px 0px 0px 10px;'>" + currentValue + "</div>";
    }
    else
    {
        return "";
    }
}

и в aspx я просто передаю значениевот так:

<%# AddGroupingHeader(Eval("Name").ToString())%>

Теперь, если у меня есть несколько записей, он работает правильно и отображает как:

United States
 - Justin
 - Bob

China
 - Frank
 - Ted

Но это проблема.Если у меня просто есть:

United States Justin
United Bob

Тогда заголовок не ставится.Он делает это:

Justin
Bob

Извините за длинный пост, но кто-нибудь видит что-нибудь, что может вызвать это, я был в тупике в течение 2 дней.: (

Спасибо!

1 Ответ

0 голосов
/ 08 марта 2012

Удалить стиль float.Метод AddGroupingHeader можно упростить.Вы бы назвали это передачей только значения, которое служит заголовком.

string _lastHeader;

protected string AddGroupingHeader(string header)
{ 
    if (header != _lastHeader) {
        _lastHeader = header;
        return "<div style='font-size: 16px; margin: 10px 0px 0px 10px;'>" + header + "</div>";
    } 
    return "";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...