0

私のaspxページにはIDがlbl1、lbl2 .... lbl20で、テキストがSqlServerテーブルによって駆動されるラベルが20個あります。ページ上のすべてのラベルをループして、リーダーからのテキストを評価する簡単な方法はありますか。私は何かをしましたが、うまくいきません。

SqlDataReader Reader = new SqlDataReader();

        int i = 0;
         while(Reader.read())
         {
             label lbl = new label();

             lbl.ID = "label" + i;
             lbl.text = Reader["ColumnName"].ToString();


         }

すべてのラベルをループしてテキストを割り当てることができる他の方法はありますか?

4

3 に答える 3

0

これを行う 1 つの方法は、findcontrol メソッドを使用することです。すべてのラベルが「lbl0」、「lbl1」... という規則で命名されているため、これはうまく機能します。

**ループ開始:

int index = 0;

string currentLabel = "lbl" + index.ToString();

index++;

Control myControl1 = FindControl(currentLabel);

// cast control to type: (label)

// apply text from reader**

それを試してみてください。それがうまくいくことを願っています

于 2011-06-29T16:00:32.363 に答える
0

それらをコンテナに入れている場合は、次のようなことができると思います。

For Each lbl As Control In Grid1.Children
  If TypeOf lbl Is Label Then
    'your logic
  End If
Next

ただし、これはシルバーライトでしか試していないので、うまくいくかどうか、またはそれらをすべてコンテナに入れることが実用的かどうかはわかりません。

于 2011-06-29T16:21:24.640 に答える
0

私は過去にこれを使用したことがあり、テストしました。

すべてのページにフォームがあるため、これを行うことができます

HtmlForm form1 = (HtmlForm)Page.FindControl("ContentPlaceHolder1");

for (int i = 1; i <= 3; i++) {
    ((TextBox)form1.FindControl("label" + i)).Text = "This is label number " + i;
}

マスターページがある場合は、最初の行をこれに変更します

ContentPlaceHolder ph = (ContentPlaceHolder)Page.FindControl("ContentPlaceHolder1");
于 2011-06-29T17:40:39.030 に答える