我生成的ASP.NET Button实际上并没有做任何事情

时间:2016-04-29 05:24:48

标签: c# asp.net .net controls

现在,我已经有了一种方法,可以根据搜索栏中的输入动态生成信息表,每行都有一个按钮。按下时,该按钮应该获取其行中存在的信息并进行处理。

我的问题是我的按钮没有做任何事情,但我不确定如何修复它。即使尝试发布到VS中的输出面板也不起作用。只要我按下一个,它所做的就是消除我的所有值 - 我表中的所有内容 - 通过刷新页面全部恢复为默认值。

    // The bottom section of the method which 'generates' buttons for each row made in the for loop - everything works perfect to this point

    TableCell addButtonCell = new TableCell();
    Button addButton = new Button();
    addButton.Text = "Add";
    addButton.Width = 75;
    addButton.Click += new EventHandler(addButton_Click);

    addButtonCell.Controls.Add(addButton);
    row.Cells.Add(addButtonCell);

    tblResults.Rows.Add(row);
}

// button event handler
public void addButton_Click(object sender, EventArgs e) {
    System.Diagnostics.Debug.Write("TESTING!!!!!"); // Tried this, no effect
}

2 个答案:

答案 0 :(得分:0)

无论动态创建什么控件,每次加载页面时都需要创建。

解决方案:

你需要按照以下方式完成......

    TableRow row;
    TableCell cell;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.IsPostBack)
        {
            this.ReloadDynamicControls();
        }
        else
        {
            DynamicControls = new List<Button>();
        }
    }
    private void ReloadDynamicControls()
    {
        if (this.DynamicControls != null)
        {
            foreach (Button button in DynamicControls)
            {
                button.Click += new EventHandler(btnKill_Click);
                row = new TableRow();
                cell = new TableCell();
                cell.Controls.Add(button);
                row.Controls.Add(cell);
                Panel1.Controls.Add(row);
            }
        }
    }

    private List<Button> DynamicControls
    {
        get { return Session["DynamicControls"] != null ? (List<Button>)Session["DynamicControls"] : null; }
        set { Session["DynamicControls"] = value; }
    }

您需要使用以下代码更改生成按钮方法:

        TableRow tr = new TableRow();
        tblResults.Controls.Add(tr);
        Button addButton = new Button();
        addButtonCell = new TableCell();
        addButtonCell.Controls.Add(addButton);
        tr.Controls.Add(addButtonCell);
        addButton.Width = 75;
        addButton.Text = "Add";
        addButton.ID = "btn_" + this.DynamicControls.Count.ToString();
        addButton.Click += new EventHandler(addButton_Click);
        addButton.EnableViewState = true;
        DynamicControls.Add(addButton);

        tr.TableSection = TableRowSection.TableBody;
        tblResults.Rows.Add(tr);

原始解决方案here

答案 1 :(得分:0)

您想在此处包含查询应该具有WHERE子句并且应该限制为1,以确保实际返回一个结果。那么if也应该改为if($ result-&gt; num_rows == 0)。