none
动态添加按钮的问题 RRS feed

  • 问题

  • 页面中有一个Label,其中放入一个table,用来显示一组从数据库中提取的记录。在table中的每条记录中的“产品名称”字段用鼠标点击可以在本页面的边上显示详细内容。

    我想将每条记录的“产品名称”字段都做成Button,当鼠标点击时可以显示产品的详细内容。

    我的代码如下:

                int index = 1; lblHad1.Text = "<table border=0><tr><td>序号</td><td>产品名称(编号)</td><td>产品价格</td></tr>";

                Button btnGoodsID = new Button();
                btnGoodsID.BorderStyle = BorderStyle.None;
                btnGoodsID.BackColor = Color.White;
                while (dtrd00.Read())
                {
                    form1.Controls.Add(btnGoodsID);
                    btnGoodsID.Text = dtrd00["GoodsName"].ToString();
                    btnGoodsID.ID = index.ToString();
                    lblHad1.Text += "<tr><td>" + (index++).ToString() + "</td><td>"+btnGoodsID+ "(" + dtrd00["ID"].ToString() + ")" + "</td><td>&nbsp;&nbsp;&nbsp;&nbsp;" + dtrd00["Price"].ToString() + "</td></tr>";
                    btnGoodsID.Click += new EventHandler(Button_Click);
                }
                lblHad1.Text += "</table>";

    序号

    以上这段代码执行后出现了以下效果,应该如何改正

    产品名称(编号)

    产品价格

    1 System.Web.UI.WebControls.Button(CP---1562A)     5.6
    2 System.Web.UI.WebControls.Button(CP---1583A)     5.8
    3 System.Web.UI.WebControls.Button(CP---1622A)     6.2
    4 System.Web.UI.WebControls.Button(CP---1643A)     6.4
    5 System.Web.UI.WebControls.Button(CP---1723A)     7.2
    6 System.Web.UI.WebControls.Button(CP---1744A)     7.4
    7 System.Web.UI.WebControls.Button(CP---2083A)     8
    8 System.Web.UI.WebControls.Button(CP---2103A)     10
    9 System.Web.UI.WebControls.Button(CP---2123A)     12
    10 System.Web.UI.WebControls.Button(CP---2153A)     15
    11 System.Web.UI.WebControls.Button(CP---3123A)     12
    2012年11月15日 14:37

全部回复

  • btnGoodsID已经被当成字符串来处理,那肯定是不行的,建议用动态TableRow tr=new TableRow(); TableColumn col=new TableColumn();然后在col中去添加Button这个Control试试

    或者手工拼写<asp:button id="xx" runat="server" onclick="xx_Click"></asp:button>这样的字符串进去

    2012年11月15日 16:35
  • Label.Text属性中不能出现ASP.NET控件。

    你可以把数据读出来放到DataSet或者Table中,然后在前台循环去绑定。也可以使用Repeater控件去循环。


    www.willin.org

    • 已建议为答案 Willin Wang 2012年11月16日 2:08
    2012年11月16日 2:08
  • 既然Label.Text属性中不能出现ASP.NET控件,我索性用htmlButton,我的代码改为

     int index = 1;

    lblHad1.Text = "<table border=0><tr><td>序号</td><td>产品名称(编号)</td><td>产品价格</td></tr>";

    while (dtrd00.Read())
                {
                    lblHad1.Text += "<tr><td>" + (index++).ToString() + "</td><td><input type='button' id='btn-" + (index - 1).ToString() + "' value='" + dtrd00["GoodsName"].ToString() + "' onserverclick='Button_Click' runat='server'/>(" + dtrd00["ID"].ToString() + ")" + "</td><td>&nbsp;&nbsp;&nbsp;&nbsp;" + dtrd00["Price"].ToString() + "</td></tr>";
                    
                }

    lblHad1.Text += "</table>";

    protected void Button_Click(object sender, EventArgs e)
            {
                Button bt = sender as Button;
                Response.Write("<script language=javascript>alert('"+bt.Text+bt.ID.ToString()+"');</script>");

            }

    运行的情况也正确,如下:

    序号 产品名称(编号) 产品价格
    1 <input id="btn-1" onserverclick="Button_Click" runat="server" type="button" value="营养餐小学低段2两" />(CP---1562A)     5.6
    2 <input id="btn-2" onserverclick="Button_Click" runat="server" type="button" value="营养餐小学低段2两" />(CP---1583A)     5.8
    3 <input id="btn-3" onserverclick="Button_Click" runat="server" type="button" value="营养餐小学高段2两" />(CP---1622A)     6.2
    4 <input id="btn-4" onserverclick="Button_Click" runat="server" type="button" value="营养餐小学高段3两" />(CP---1643A)     6.4
    5 <input id="btn-5" onserverclick="Button_Click" runat="server" type="button" value="营养餐中学3两" />(CP---1723A)     7.2
    6 <input id="btn-6" onserverclick="Button_Click" runat="server" type="button" value="营养餐中学4两" />(CP---1744A)     7.4
    7 <input id="btn-7" onserverclick="Button_Click" runat="server" type="button" value="商务套餐A8" />(CP---2083A)     8
    8 <input id="btn-8" onserverclick="Button_Click" runat="server" type="button" value="商务套餐A10" />(CP---2103A)     10
    9 <input id="btn-9" onserverclick="Button_Click" runat="server" type="button" value="商务套餐A12" />(CP---2123A)     12
    10 <input id="btn-10" onserverclick="Button_Click" runat="server" type="button" value="商务套餐A15" />(CP---2153A)     15
    11 <input id="btn-11" onserverclick="Button_Click" runat="server" type="button" value="盖浇饭A12" />(CP---3123A)     12

    但鼠标单击按钮没反应,为什么?


    2012年11月17日 8:34