找到动态创建的组合框的值

时间:2011-11-17 05:07:15

标签: c# asp.net combobox

我正在使用VS2010,C#,我有一个表,它的数据应该动态创建(从SQL服务器表),我必须添加一个组合框(有3个项目)到其中一个列,这个组合框也是动态创建的,然后我给每个组合一个唯一的ID,它将autopost back设置为off,并且当用户更改某些组合框的值(每行有一个combox),然后按下时,enableviewstate和viewstatemode为true并启用提交按钮,我想拥有我的组合框的当前状态但是他们的selectedindex是0所以我不能使用它们,我该怎么办?我有什么选择? (我发现每个组合框都使用FindControl和组合框的唯一ID)

感谢

2 个答案:

答案 0 :(得分:1)

请在上面的问题中找到以下答案

  1. 首先,您需要在创建动态组合框的同时在Javascript中注册组合框的onchange事件。
  2. 在页面上放置一个隐藏字段
  3. 然后将代码放在onchange事件中,使用Clientid从onchange事件设置隐藏字段中的值,然后从服务器端获取隐藏字段的值。

答案 1 :(得分:0)

你可以使用回发..这里是一个示例代码片段..如果你想在回发上工作然后按照这个..否则你可以按照Rahul告诉你的方法..

public partial class DynamicCombo : System.Web.UI.Page
    {
        DropDownList list;

        protected void Page_Init(object sender, EventArgs e)
        {
            Table table = CreateHtmlTable();
            list = new DropDownList();
            list.AutoPostBack = true;
            list.SelectedIndexChanged += new EventHandler(list_SelectedIndexChanged);
            list.ID = "cbo";
            list.Items.Add(new ListItem("value1", "1"));
            list.Items.Add(new ListItem("value2", "2"));
            list.Items.Add(new ListItem("value3", "3"));
            table.Rows[0].Cells[0].Controls.Add(list);

            pnl.Controls.Add(table);
        }

        private void list_SelectedIndexChanged(object sender, EventArgs e)
        {
            Response.Write("<script>alert(\"" + list.SelectedIndex + "\");</script>");
        }

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

        private Table CreateHtmlTable()
        {
            Table table = new Table();
            table.Rows.Add(new TableRow());
            table.Rows[0].Cells.AddRange(new TableCell[] { new TableCell(),
                                                       new TableCell(),
                                                       new TableCell()});
            return table;
        }
    }