我正在使用来自SQLDataReader的数据在页面中填充PlaceHolder。我可以从数据库中获取所有数据,但是当我尝试将click事件添加到动态链接按钮时,偶数将不会触发。我已经尝试将代码放在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);
}
}
答案 0 :(得分:0)
我要离开并问,这里的代码是否与您的实时服务器上的代码略有不同?当您在!IsPostBack
部分中附加单击手柄时,通常会出现您正在描述的问题。
在这种情况下,虽然在单击按钮时仍然会引发回发,但是当回发后控件到达Page_Load的末尾时,控件没有关联的click事件,因此,事件永远不会执行。 这可能发生在这里吗?
答案 1 :(得分:0)
嗯,不是真正的修复,而是我发现的一种解决方法:我将LinkButton调用更改为普通Button,这样就完成了。不知道为什么,但这是一个前进的方向。谢谢你的帮助!