我正在从数据库中检索数据,具体取决于texboxes输入并存储在数据表中,然后从datatable im发送数据到动态表并在面板中显示表,在表中,第一列的所有数据都是链接按钮,我为动态链接按钮编写了事件处理程序,但事件处理程序没有触发,我想将linkbutton文本存储在事件处理程序的字符串中,但事件处理程序没有触发。
代码:
protected void Button1_Click(object sender, EventArgs e)
{
// GridView1.
DataTable dt = new DataTable();
OleDbConnection con = new OleDbConnection(str);
con.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandText = "select ID,title,desc from [SO] where ID='" + TextBox1.Text.ToString() + "'or title='" + TextBox2.Text.ToString() + "'";
OleDbDataAdapter db = new OleDbDataAdapter(cmd);
db.Fill(dt);
Table tb = new Table();
tb.BorderColor = Color.Black;
tb.BorderWidth = 2;
DataRow dr;
for (int i = 0; i < dt.Rows.Count; i++)
{
TableRow tr = new TableRow();
tr.BorderColor = Color.Black;
tr.BorderWidth = 2;
tr.ID = "tr" + i;
TableCell tc = new TableCell();
tc.BorderColor = Color.Black;
tc.BorderWidth = 2;
tc.ID = "tc" + i;
TableCell tc1 = new TableCell();
tc1.BorderColor = Color.Black;
tc1.BorderWidth = 2;
tc1.ID = "tc1" + i;
TableCell tc2 = new TableCell();
tc2.BorderColor = Color.Black;
tc2.BorderWidth = 2;
tc2.ID = "tc2" + i;
LinkButton t = new LinkButton();
t.BorderColor = Color.Black;
t.BorderWidth = 2;
t.ID = "t" + i;
t.Click += new EventHandler(t_edit);
TextBox t1 = new TextBox();
t1.BorderColor = Color.Black;
t1.BorderWidth = 2;
t1.ID = "t1" + i;
TextBox t2 = new TextBox();
t2.BorderColor = Color.Black;
t2.BorderWidth = 2;
t2.ID = "t2" + i;
dr = dt.Rows[i];
t.Text = Convert.ToString(dr["ID"]);
t1.Text = Convert.ToString(dr["title"]);
t2.Text = Convert.ToString(dr["desc"]);
tc.Controls.Add(t);
tc1.Controls.Add(t1);
tc2.Controls.Add(t2);
tr.Cells.Add(tc);
tr.Cells.Add(tc1);
tr.Cells.Add(tc2);
tb.Rows.Add(tr);
}
Panel1.Controls.Add(tb);
}
protected void t_edit(object sender, EventArgs e)
{
}
k但是通过使用会话概念我检索总表以便链接按钮也在检索,并且我想在按钮点击上添加linkbttons,这里的问题是eventhandler没有分配给linkbutton,而im点击按钮时添加链接按钮,而不是页面加载。
答案 0 :(得分:1)
您必须使用Page_Init
或Page_Load
事件处理程序来编写动态创建控件的代码。请阅读How to add controls dynamically和ASP.NET页面生命周期文章中的MSDN页面。
答案 1 :(得分:0)
您可以向Page_Load
事件添加事件处理程序,但要记住的重要事项是必须在每次加载页面时添加它们。在!Page.IsPostBack
子句中执行诸如此类的设置类型任务是很常见的。当连接事件处理程序时,情况并非如此,否则它们似乎会消失
if(!Page.PostBack)
{
control.EventRaised += new EventHandler(EventResponse)
}
错误,会导致处理程序在回发中消失