ASP.Net UserControl单击事件只导致回发,而不会触发事件
本文关键字:事件 UserControl Net 单击 ASP | 更新日期: 2023-09-27 18:19:15
当我附加我的UserControl
(包含文字控件,imageButton
控件,标签,点击事件与imageButton控件)在主页面(default.aspx)动态地,每个ImageButton
点击事件用户控制不触发,只刷新。此外,我在ImageButton
的点击事件逻辑的第一行确定了断点是行不通的。它似乎没有通过点击事件。请帮帮我
下面是UserControl的反向代码
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ContentHolder.ascx.cs" Inherits="TISSWeb.ContentHolder" %>
<asp:Panel ID="Panel2" runat="server" BorderColor="#3399FF" BorderStyle="Solid"
BorderWidth="1px" width="100%">
<asp:ImageButton ID="ImageButton1" runat="server" Width="16px"
onclick="ImageButton1_Click" />
<asp:ImageButton ID="ImageButton2" runat="server" onclick="ImageButton2_Click" Width="16px"/>
<asp:Label ID="Label1" runat="server" Text="Title"></asp:Label>
<asp:ImageButton ID="ImageButton4" runat="server" ImageUrl="~/Images/linknew.gif" />
<asp:Label ID="Label2" runat="server" Text="Date"></asp:Label>
<br />
<asp:Panel ID="Panel3" runat="server" style="overflow:hidden;height:60px;">
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</asp:Panel>
</asp:Panel>
//below is C#(asp.net) Code
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
//below if is where I settled the Break Point
if (starred == "1")
{
starred = "0";
ImageButton2.ImageUrl = "~/Images/star-off.png";
String sql = "some sql";
mysql.ExecuteNonQuery(sql);
}
else
{
starred = "1";
ImageButton2.ImageUrl = "~/Images/star-on.png";
String sql = "some sql";
mysql.ExecuteNonQuery(sql);
}
}
//下面是主页的后台代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebForm1" %>
<%@ Register src="ContentHolder.ascx" tagname="ContentHolder" tagprefix="ContentHolder" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:Panel ID="Panel1" runat="server" BackColor="#006699" Height="35px"
<asp:Label ID="Label1" runat="server" Text="Subscription"></asp:Label>
</asp:Panel>
</form>
</body>
</html>
//下面是c# (ASP.net)主页面的代码
protected void Page_Load(object sender, EventArgs e)
{
DataTable SrcData = mysql.executeSelect("Some SQL");
for (int i = 0; i < dt.Rows.Count; i++)
{
ContentHolder uc = (ContentHolder)LoadControl("ContentHolder.ascx");
form1.Controls.Add(uc);
}
}
好的,所以我已经测试了你的代码(与矿工例外,你得到那里)它的工作(我删除了所有的图像,除了ImageButton2)调试,它的工作。
所以我建议你做同样的事情,删除所有的图像,留下一个,测试它我的猜测它将工作,然后添加另一个img和测试,我可以告诉你非常新的asp.net,因为你正在使用设计视图来塑造你的页面,这就是为什么你得到很多不可破坏的空间在你的代码我真的建议不要像这样工作,因为你永远不会像这样学会正确地编码HTML,花时间不要跳过步骤,阅读HTML CSS JS以更好地理解当客户端技术比服务器好,反之亦然,但这是我的50美分:)
祝你愉快。