从外部创建的下拉列表中获取选定的值

时间:2015-04-28 20:41:52

标签: javascript c# jquery asp.net

我正在创建一个动态菜单,从数据库中提取菜肴并将其显示给用户,以便他可以将它们添加到他的订单中。每当我从数据库中检索一行时,我都会将它发送到我的menuItems类,这样就可以读取列并创建显示格式并将其插入到单元格中:

 foreach (DataRow dr in drc){
            //extract the dish data from the row into a cell
            TableCell c1 = menuItem.makeItemCell(dr);
            //display it
            tr.Controls.Add(c1);
            table1.Controls.Add(tr);
}

c1将是一个包含菜品信息的单元格以及数量下拉列表和"添加到订单"按钮:

      public static TableCell makeItemCell(DataRow dr)
    {
        TableCell tc = new TableCell();
        Image img = new Image();

        img.ImageUrl = (string)dr["img"];
        tc.Controls.Add(img);

        //rest of information adding is omitted for brevity
        String myLiteral = "<p>" + "Name: " + (string)dr["NameofDish"] + "</br>";
        tc.Controls.Add(new LiteralControl(myLiteral));

        //add quantity label and dropdownlist populated with possible quantity values
        Label lb = new Label();
        lb.Text = "Quantity: ";
        DropDownList ddl = new DropDownList();
        for (int i = 0; i < 13; i++)
        {
            String t = i.ToString();
            ddl.Items.Add(new ListItem(t, t));
        }

        //create the add to order button
        Button btn = new Button();
        btn.Text = "Add to order";

        tc.Controls.Add(lb);
        tc.Controls.Add(ddl);
        tc.Controls.Add(btn);

        return tc;
    }

我的问题是处理按钮点击事件。我所有尝试将它与事件处理程序绑定(在menuItems类或代码隐藏本身上)都失败了。我只能设法更新按钮的postbackURL,如果它在单元格中创建,就像这样

btn.PostBackUrl = "./menu.aspx?dish=" + (string)dr["ID"] + "&quantity=" + ddl.SelectedValue;

但是在创建单元格时会呈现.selectedvalue值,因此始终为0

我的问题是:如何处理按钮点击事件,以便我能够掌握dishID和所选值。

<(>(((如果可能的话,我更喜欢事件处理解决方案而不是查询字符串))))

谢谢!

编辑: 我的整个问题是,单元及其组件是在外部类中创建的,并发送回我的代码。如果我没有元素ID或任何内容,我如何从我的代码隐藏中访问下拉列表变量

0 个答案:

没有答案