1

ストアド プロシージャを実行し、datareader を開始し、内容を arraylist に入れるために作成したクラスがあります。

クラスコード

public class GHPSlider
{
    private clsDbAccess _db;
    private clsDbAccess _tmpDb;

    public ArrayList getBanners(int thisBannerType)
    {
        ArrayList HeroBanners = new ArrayList();
        SqlDataReader _dr = null;
        SqlCommand cmd = _db.Command;
        if (_db.Connection.State == ConnectionState.Closed)
        {
            _db.Connection.Open();
        }
        cmd = _db.Command;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "GetGHPSlides";
        cmd.Parameters.Clear();
        cmd.Parameters.AddWithValue("@ID", thisBannerType);
        _dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        if (_dr.HasRows)
        {
            while (_dr.Read())
            {
                object[] values = new object[_dr.FieldCount];
                _dr.GetValues(values);
                HeroBanners.Add(values);
            }
        }
        _dr.Close();

        return HeroBanners;
    }
}

コード ビハインドでは、ArrayList にアクセスして、ループしてコードをプレゼンテーション レイヤーに出力しようとしています。私はプログラミングのn層の方法にかなり慣れていないので、正しい方向に導くためにいくつかの助けを借りることができます.

分離コード

Public Function GetHeros() As String

    Dim thisTestSubject As ArrayList = New GHPSlider.getBanners(1)
    'Loop through thisTestSubject ArrayList and place into HTML string to pass to literal or label
    thisBannerSlideBuilderHTML = "<div style='z-index:0;background-color:#FFF;'><a href='" + thisBannerSlideURL.ToString() + "' onclick='RecordBannerClick(this, 'Hero', 'GHP', '" + thisBannerSlideTitle.ToString() + "');'><img alt='" + thisBannerSlideTitle.ToString() + "' src='" + thisBannerSlideImagePath.ToString() + "' /></a></div>";
    'Place Inside Literal or Label to display to presentation layer

End Function

誰かが私を正しい方向に向けるのを手伝ってくれたら、それは素晴らしいことです! 前もって感謝します。

4

1 に答える 1

1

持っているクラスにアクセスできない場合は、インスタンス化する必要があります。例えば、

GHPSlider slider = new GHPSlider(); 

そこから、プロパティとメソッドにアクセスできます

slider.getBanners();

あなたが現在使用しているコードはかなり難解です。何に使用しているのかわかりません。実行可能かもしれません。ただし、階層化プログラムについて少し読みたいと思うかもしれません。これは、このことを精神的に整理するのに少し役立ちます。あなたが実際にデータ層を持っていないことは知っていますが、データ アクセス層について読むと、おそらくその背後にあるアーキテクチャを理解するのに役立つでしょう。


私は実際には C# の観点からしか支援を提供できませんが、移植できる可能性があります。

配列の値を反復処理する場合、目的によって異なります。単純化したコーディングで、10 個の値の配列があるとします。それらをforループで反復すると、別のコマンドに渡すことで各値を取得できます。

int[] array = new int[p];

        for (int i = 0; i < p; i++)
        {
            array[i] = i;
            Console.WriteLine(array[i]);
        }

この出力は、0 ~ 9 のカウントです。

配列を手伝ってください!

より具体的には、ArrayList

古いコードを使用していることは理解していますが、ループArrayListを使用した値の反復forがおそらく最善の策です。

于 2013-01-15T21:50:48.207 に答える