2

私はしばらく検索しましたが、これを行う正しい方法について、またはそれが可能であったとしても、明確な答えを得ることができません。SQL のテーブルから 2 行を取得して、DataTable に返します。行を反復処理し、その行の div を動的に作成してから、保存された値を含む各列のラベルを作成し、次の行のプロセスを繰り返します。

それを機能させるために欠けているのは、ラベルをリストに保存して、divが作成されるプレースホルダーに戻すことだけです.

ここにスニペットがあります...また、学習目的でグリッドビューやテーブルを使用するのではなく、この方法でやりたいのですが、グリッドビューとテーブルを使用してこれを行う方法は既に知っています。この SQL テーブルには合計 7 つの列があり、無制限の数の行を持つことができます。

編集

 public void AddDiv(DataTable gameData)
    {
        for (int i = 0; i < gameData.Rows.Count; i++)
        {

            //newControl.InnerHtml = AddLabel(gameData, i);
            //PlaceHolder1.Controls.Add(newControl);
            HtmlGenericControl newControl = new HtmlGenericControl("div");
            newControl.ID = "div" + i++;

            Label lblTitle = new Label();
            lblTitle.Text = gameData.Rows[i]["Game_Title"].ToString();
            this.Controls.Add(lblTitle);
            PlaceHolder1.Controls.Add(lblTitle);

            Label lblPublisher = new Label();
            lblPublisher.Text = gameData.Rows[i]["Game_Publisher"].ToString();
            this.Controls.Add(lblPublisher);
            PlaceHolder1.Controls.Add(lblPublisher);

            Label lblGenre = new Label();
            lblGenre.Text = gameData.Rows[i]["Game_Genre"].ToString();
            this.Controls.Add(lblGenre);
            PlaceHolder1.Controls.Add(lblGenre);

            Label lblESRB = new Label();
            lblESRB.Text = gameData.Rows[i]["Game_ESRB"].ToString();
            this.Controls.Add(lblESRB);
            PlaceHolder1.Controls.Add(lblESRB);

            Label lblUserRating = new Label();
            lblUserRating.Text = gameData.Rows[i]["Game_UserRating"].ToString();
            this.Controls.Add(lblUserRating);
            PlaceHolder1.Controls.Add(lblUserRating);

            Label lblWebsite = new Label();
            lblWebsite.Text = gameData.Rows[i]["Game_Website"].ToString();
            this.Controls.Add(lblWebsite);
            PlaceHolder1.Controls.Add(lblWebsite);

        }
    }
4

1 に答える 1

1

まず、HtmlGenericControl の InnerHtml プロパティは文字列です。コードは void メソッドの結果をこのプロパティに割り当てています。あなたがしたいことは、divを作成し、それへの参照をAddLabelメソッドに渡すことだと思います。ここでラベルを作成し、それらを div の Control のプロパティに追加できます。最後に、現在行っているように、div をプレースホルダーに追加します。うまくいけば、これで正しい軌道に乗ることができます。

 protected void Page_Load(object sender, EventArgs e)
        {
            AddDiv();
        }

        public void AddDiv()
        {
            for (int i = 0; i < 5; i++)
            {
                HtmlGenericControl newControl = new HtmlGenericControl("div");
                newControl.ID = "div" + i;
                AddLabel(newControl, i);
                PlaceHolder1.Controls.Add(newControl);
            }

        }

        protected void AddLabel(HtmlGenericControl control, int i)
        {
            Label lblTitle = new Label();
            lblTitle.Text = "label" + i.ToString();
            control.Controls.Add(lblTitle);

            Label lblPublisher = new Label();
            lblPublisher.Text = "publisherLabel" + i.ToString();
            control.Controls.Add(lblPublisher);
        }
于 2013-08-16T20:09:10.987 に答える