现在,我已经有了一种方法,可以根据搜索栏中的输入动态生成信息表,每行都有一个按钮。按下时,该按钮应该获取其行中存在的信息并进行处理。
我的问题是我的按钮没有做任何事情,但我不确定如何修复它。即使尝试发布到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
}
答案 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)。