动态点击事件是';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);         
    }
}

动态点击事件是';t在C#中点火

我要越界问,这里的代码与您的实时服务器上的代码有点不同吗?当您在!IsPostBack节中附加单击句柄时,通常会出现您所描述的问题。

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

好吧,这并不是一个真正的修复方法,而是我发现的一个变通方法:我将LinkButton调用更改为普通按钮,结果成功了。不知道为什么,但这是一条前进的道路。谢谢你的帮助!