1

我编写了一个类来运行存储过程,启动数据读取器并将内容放入数组列表中。

班级代码

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# 的角度真正提供帮助,但您也许可以将其移植过来。

对于遍历数组的值,它实际上取决于目的。在简单的编码中,假设您有一个包含十个值的数组。使用循环遍历它们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 回答