动态点击事件是';t在C#中点火
本文关键字:事件 动态 | 更新日期: 2023-09-27 18:25:17
我正在用SQLDataReader中的数据填充页面中的PlaceHolder。我可以从数据库中获取所有数据,但当我试图将单击事件添加到动态链接按钮时,它甚至不会启动。我试过把代码放在PreInit和Init函数中,但一点也没有。非常感谢!
这是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
InsertRotatorIntoSQL selectGroups = new InsertRotatorIntoSQL();
SqlConnection conn = selectGroups.Connection();
string groupCmd = "SELECT g.GroupID, g.GroupName, g.GroupDescription, i.ImgName FROM dbo.ImageGalleryGroups g INNER JOIN dbo.ImageGalleryImages i on i.GroupID=g.GroupID WHERE i.IsThumbnail=1";
SqlCommand getGroupCmd = new SqlCommand(groupCmd, conn);
conn.Open();
SqlDataReader sdr = getGroupCmd.ExecuteReader();
while (sdr.Read())
{
string id = sdr.GetValue(0).ToString();
string name = sdr.GetValue(1).ToString();
string desc = sdr.GetValue(2).ToString();
string img = sdr.GetValue(3).ToString();
Literal containerDiv = new Literal();
containerDiv.Text = "<div style='float:left; margin:0 5px;'>";
PlaceHolder1.Controls.Add(containerDiv);
Literal t = new Literal();
t.Text = "<h3>" + name + "</h3>";
PlaceHolder1.Controls.Add(t);
Image gThumb = new Image();
gThumb.Width = 150;
//todo implement css border:1px solid #eee; padding:2px;
gThumb.ImageUrl = "/App_Templates/Skin_1/ImageGalleryGroups/" + name + "/" + img;
PlaceHolder1.Controls.Add(gThumb);
Literal br = new Literal();
br.Text = "<br /><p> ";
PlaceHolder1.Controls.Add(br);
LinkButton del = new LinkButton();
del.Click += new EventHandler(this.Delete_Group);
del.Text = "Delete";
del.CssClass = "delbtn";
PlaceHolder1.Controls.Add(del);
Literal d = new Literal();
//create editgroup
d.Text = " | <a href='ViewGroup.aspx?GroupID=" + id + "'>Edit</a></p>";
PlaceHolder1.Controls.Add(d);
Literal cdClose = new Literal();
cdClose.Text = "</div>";
PlaceHolder1.Controls.Add(cdClose);
}
}
我要越界问,这里的代码与您的实时服务器上的代码有点不同吗?当您在!IsPostBack
节中附加单击句柄时,通常会出现您所描述的问题。
在这种情况下,虽然在单击按钮时仍会导致回发,但当控件在回发后到达Page_Load的末尾时,该控件没有关联的单击事件,因此,该事件永远不会执行。这会发生在这里吗?
好吧,这并不是一个真正的修复方法,而是我发现的一个变通方法:我将LinkButton调用更改为普通按钮,结果成功了。不知道为什么,但这是一条前进的道路。谢谢你的帮助!