动态点击事件未在C#中触发

时间:2012-02-22 00:01:08

标签: c# asp.net events dynamic controls

我正在使用来自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);         
    }
}

2 个答案:

答案 0 :(得分:0)

我要离开并问,这里的代码是否与您的实时服务器上的代码略有不同?当您在!IsPostBack部分中附加单击手柄时,通常会出现您正在描述的问题。

在这种情况下,虽然在单击按钮时仍然会引发回发,但是当回发后控件到达Page_Load的末尾时,控件没有关联的click事件,因此,事件永远不会执行。 这可能发生在这里吗?

答案 1 :(得分:0)

嗯,不是真正的修复,而是我发现的一种解决方法:我将LinkBut​​ton调用更改为普通Button,这样就完成了。不知道为什么,但这是一个前进的方向。谢谢你的帮助!