.net Repeater удаляет дубликаты данных - PullRequest
1 голос
/ 31 января 2012

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

В базе данных (informix) :

  • Удержание заработной платы 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 ( );

1 Ответ

1 голос
/ 01 февраля 2012

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

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

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

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

...