.net Repeater удаляет повторяющиеся данные

У меня есть повторитель, который я пытаюсь показать данные на основе инструкции sql. Однако по какой-то причине, если у меня есть несколько строк одной и той же записи в повторителе, он показывает только одну. Например:

В базе данных (информикс):

  • Удержание из заработной платы 250.00
  • Удержание из заработной платы 250.00
  • Удержание из заработной платы 250.00
  • Удержание из заработной платы 250.00
  • Студенческое медицинское страхование 1100.00

Отображается в повторителе:

  • Удержание из заработной платы 250.00
  • Студенческое медицинское страхование 1100.00

Любая идея, почему это может быть? SQL, который я использую в коде (ниже), отлично работает, когда я запускаю его в базе данных.

private DataTable GetCreditData ( string id, string sessyr )
    {
        OdbcConnection conn = new OdbcConnection ( );
        conn.ConnectionString = cxConnStr;

        // Define our SQL
        String sql = "select  ABS(t1.amt) as amt , t2.txt from subtr_rec t1, subt_table t2 where t1.subs = 'S/A' and t1.tot_prd = ? and t1.subs_no=? and t1.amt < 0  and t1.tot_code = t2.tot_code and t1.subs = t2.subs UNION select t1.amt, t2.txt from aid_rec t1 join  aid_table t2 on t1.aid=t2.aid where t1.sess =? and t1.yr = ? and t1.id = ? and  ((stat='A' and amt_stat='AA') or (stat='I' or amt_stat='AA'))";

        // Command
        OdbcCommand command = new OdbcCommand ( );
        command.Connection = conn;
        command.CommandText = sql;

        command.Parameters.Add ( new OdbcParameter ( "sess", sessyr ) );
        command.Parameters.Add ( new OdbcParameter ( "id", id ) );
        command.Parameters.Add ( new OdbcParameter ( "sess2", CurrSess ) );
        command.Parameters.Add ( new OdbcParameter ( "yr", CurrentYr ) );
        command.Parameters.Add ( new OdbcParameter ( "id2", id ) );

        // Create a DataTable to store our Cached results.
        DataTable dt = new DataTable ( );

        // Create a DataAdapter used to fill the DataTable
        OdbcDataAdapter dataAdapter = new OdbcDataAdapter ( );

        // Associate the DataAdapter and select command created above
        dataAdapter.SelectCommand = command;

        try
        {
            // Open Database.
            conn.Open ( );

            // Fill DataTable.
            dataAdapter.Fill ( dt );
        }
        catch ( Exception ex )
        {
            edException.Error = ex;
            this.ParentPortlet.ShowFeedback ( FeedbackType.Message, "There was an error looking up term credits." );
        }
        finally
        {
            if ( conn != null && conn.State == ConnectionState.Open )
            {
                // Release our resources (close db connection)
                conn.Close ( );
            }
        }
        return dt;

    }

Вот где таблица данных привязана к повторителю (page_load):

DataTable creditdata = GetCreditData ( Host, CurrSess + CurrentYr.Remove ( 0, 2 ) );
TermCredits.DataSource = creditdata;
TermCredits.DataBind ( );

person MogulBomb    schedule 31.01.2012    source источник
comment
Можете ли вы запустить SQL для БД, чтобы увидеть, что он возвращает - таким образом мы можем изолировать, является ли это проблемой команды SQL или самим ретранслятором!   -  person Bertie    schedule 31.01.2012
comment
Проблема была с союзом в инструкции sql. Союз должен быть Union All, чтобы предотвратить удаление дубликатов.   -  person MogulBomb    schedule 31.01.2012
comment
@NLarkin, вам, вероятно, следует удалить этот вопрос   -  person Magnus    schedule 31.01.2012


Ответы (1)


@NLarkin - надеюсь, вы не возражаете, если я дам это в ответ, так сказать, постфактум. Я пытаюсь создать что-то вроде портфолио и хотел бы, так сказать, укрепить свое присутствие в Интернете.

Итак, резюмируя мой комментарий - проверьте результаты, которые дает SQL. Поскольку здесь больше, чем «одна движущаяся часть», это позволит вам изолировать проблему. Если SQL выдает ожидаемый результат, то вы знаете, что это повторитель, и, очевидно, если это не так, вы знаете, что это SQL. :)

В общем - (и надеюсь, я не учу вас сосать яйца), когда у вас есть эти разделения слоев, всегда полезно проверить снизу вверх, что каждый «слой» дает ожидаемые результаты.

Надеюсь, это было полезно, и удачного программирования!!
Удачи,
Крис.

person Bertie    schedule 01.02.2012