-2

ASP.NET で動的リストボックス (4 ~ 10) を作成しました。そして私の質問は、C#を使用して動的に作成されたリストボックスを見つけるにはどうすればよいですか?

ありがとう

わかりました...そして、私はあなたの助けに感謝します. 以下のコードは、動的LBの作成に使用しています

protected void btndyfilter_Click(object sender, EventArgs e)
        {


            int numberOfListBox = lbFilter.GetSelectedIndices().Length;
            string lbname = lbFilter.SelectedValue;
            for (int i = 0; i < numberOfListBox; i++)
            {
                ListBox listb = new ListBox();
                ListItem lItem = new ListItem();
                listb.SelectionMode = System.Web.UI.WebControls.ListSelectionMode.Multiple;

                listb.Height = 150;
                listb.Width = 200;
                lItem.Value = i.ToString();

                lItem.Text = lbname;
                listb.Items.Add(lItem);
                panFilter.Controls.Add(listb);
                //once we created the LB dynamically i need to populate each LB with the corresponding values
                connstr2 = System.Configuration.ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
                conn2.ConnectionString = connstr2;
                conn2.Open();
                CubeCollection CubeList = conn2.Cubes;
                string cb = ddlCubeList.SelectedItem.Text;
                //need to remove the Hardcoded Code
                foreach (Member dimem in CubeList[cb].Dimensions["Date"].Hierarchies["Calendar Date"].Levels["Date"].GetMembers())
                {
                    ListItem Memlist = new ListItem();
                    Memlist.Text = dimem.UniqueName;
                    lbFilter.Items.Add(Memlist);

                }

            }
            panFilter.Visible = true;
            panCubeDef.Visible = true;
        }

したがって、これによりLBが作成されると思います:) ...そしてコメント付きのコード内で、LBアイテムごとに入力するために使用する必要があります..おそらく、削除する必要があるビットがハードコードされています。したがって、すべての動的 LB が設定され、すべての LB から選択されたアイテムが MDX クエリの where 句に入ります。混乱しないことを願っています。

4

3 に答える 3

2

動的コントロールの詳細をディクショナリに保存する方法と、このようなコードを使用していつ使用するかを見つける方法の 2 つがあります。

Control GetControlByName(string Name)
{
foreach(Control c in this.Controls)
    if(c.Name == Name)
        return c;

return null;
}
于 2012-11-26T07:20:19.080 に答える
0

ListBox を動的に生成する際に、ListBox ID を , として指定し lstBoxNo1ますlstBoxNo2lstBoxNo31,2,3(no) は count からのものです。お気に入り

int カウント = 1;

リストボックス コントロールを生成する

listboxid=lastBoxNo+count;

count++

`これを行うことで、ID を制御できます。

それ以外の場合は http://stackoverflow.com/questions/3731007/using-findcontrol-to-find-control 、このリンクを使用してfindcontrolを理解してください。

于 2012-11-26T07:11:20.320 に答える
0

動的コントロールがあることを見つけることができないポイント。

  1. ページを最初にレンダリングした瞬間。
  2. 他のすべての投稿で。

1 の場合、その作成物を保持する変数をページに保持することをお勧めします。

2 の場合、ポストバックがある場合、レンダリング時にコントロールの作成をページに保存する必要があります。1 つの適切な場所は、その情報をビューステートに保持することです。

また、ポスト バックで、1 から始まるシリアル番号で名前を付けたコントロールから評価されたポスト バックがあるかどうかを確認することもできます。あなたが終了する他の値が見つかりません。

于 2012-11-26T07:20:51.510 に答える