-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

有两种方法,您可以使用字典存储动态控制详细信息,或者使用类似这样的代码查找何时使用它

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, lstBoxNo2. lstBoxNo3等等,其中 1,2,3(no) 将来自计数。喜欢

整数计数=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 开始,例如,您开始查看是否从 ControlName_1 回发,然后是 ControlName_2,当您没有找到你结束的任何其他值。

于 2012-11-26T07:20:51.510 回答