可不可以在一个.aspx页面或组件中定义一个事件,在另一个页面中触发。也就是说实现两个WebForm之间通讯。
解决方案 »
- 解释一段代码
- .net中如何代替get在各页面间跳转并传递参数?
- ASP.NET(C#)如何实现动态曲线图
- 征求大家的意见。
- Request.ServerVariables["HTTP_REFERER"]是如何工作的?
- 水晶报表统计isnull()问题
- 能不能看看这个Ajax为什么没有效果
- 在asp.net中有象delphi中的dbedit一类的控件么,那我要显示一个单独的select语句结果值该怎么处理?不想用datagrid~~多谢~
- 学习asp.net应该要学哪些东东。
- 关于装升级到2008 sp1.exe
- 高人请进!“无法写入输出文件“C:\Documents and Settings\Administrator\VSWebCache\CCLOVER\LiJiang\obj\Debug\LiJiang.pdb”:拒绝访
- 如何将页面所有的dropdownlist的值遍历找出来?
//public class XLabel:Label,IPostBackEventHandler,IPostBackDataHandler
{
public event System.EventHandler OnDblClick;
public event System.EventHandler OnClick;
internal string dd;
public XLabel()
{
} protected override void RenderContents(HtmlTextWriter writer)
{
base.RenderContents(writer);
}
public virtual void RaisePostBackEvent(string eventArg)
{
ProcessEvents(eventArg);
// System.EventArgs s = new EventArgs();
// OnMouseSend(s);
RaisePostDataChangedEvent();
}
public bool ProcessEvents(string Eevent)
{
bool rb = false;
if(Eevent == "OnDblClick")
dd = "OnDblClick";
else
dd = "OnClick";
rb = true;
return rb;
}
public void RaisePostDataChangedEvent()
{
System.EventArgs eh = new EventArgs();
if(dd == "OnClick")
{
this.OnClickSend(eh);
}
if(dd == "OnDblClick")
this.OnDblClickSend(eh);
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
writer.WriteLine();
writer.Write("<!------------------------------ ");
writer.Write("Powerise Web UI Pager Start");
writer.WriteLine(" ------------------------------>");
if(AutoPostBack)
//Page.RegisterRequiresPostBack(this);
{
//this.Attributes.Add("Ondblclick",Page.GetPostBackClientEvent(this,"Ondblclick"));
this.Attributes.Add("oncontextmenu",Page.GetPostBackClientEvent(this,"OnDblClick"));
this.Attributes.Add("Onclick",Page.GetPostBackClientEvent(this,"Onclick"));
}
//writer.AddAttribute("OnClick","__doPostBack("+this.UniqueID+",'')");
base.RenderBeginTag(writer);
//writer.WriteAttribute("Onclick","dd()");
}
[DefaultValue(true),
Category("是否回送!"),
Description("Made by Minsky[x3q]") ]
public bool AutoPostBack
{
set{ViewState["AutoPostBack"]=value;}
get
{
object obj=ViewState["AutoPostBack"];
return (obj==null)?true:(bool)obj;
}
}
protected virtual void OnDblClickSend(EventArgs e)
{
if(OnDblClick != null)
{
//if(this.AutoPostBack)
OnDblClick(this,e);
}
}
protected virtual void OnClickSend(EventArgs e)
{
if(OnClick != null)
{
//if(this.AutoPostBack)
OnClick(this,e);
}
}
#region IPostBackDataHandler 成员 public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
// TODO: 添加 XLabel.LoadPostData 实现
return false;
} #endregion
}
public delegate void LabelSendEventHandle(object sender,EventArgs e);
/// <summary>
/// TestWUC 的摘要说明。
/// </summary>
public class TestWUC : System.Web.UI.UserControl
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Label Label1;
public System.Web.UI.WebControls.Panel Panel1;
public WebTest.XLabel XLabel1;
public event System.EventHandler LabelOnmouseover;
public event System.EventHandler myClick;
public event System.EventHandler MyClick;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
//Label2.OnMouseOver += new
this.XLabel1.Text = "I Love you";
//this.Label2.Attributes.Add("onclick",Page.GetPostBackClientEvent(this.Label1,""));
//this.Label1.Attributes.Add("onclick",Page.RegisterRequiresRaiseEvent(this.Label1));
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.Button1.Click += new System.EventHandler(internalClick);
this.XLabel1.OnClick += new System.EventHandler(internalClick1);
this.XLabel1.OnDblClick += new System.EventHandler(internalClick2);
//this.Label1.Attributes.["onclick"]
//this.Button1.Click += new ButtonClick(SendMessage);
}
#endregion
protected virtual void SendMessage(EventArgs e)
{
if(MyClick != null)
MyClick(this,e);
}
public void dd()
{
this.SendMessage(EventArgs.Empty);
}
private void internalClick(object sender,System.EventArgs e)
{
if (myClick != null)
myClick(sender,e);
}
private void internalClick1(object sender,System.EventArgs e)
{
if(LabelOnmouseover!= null)
LabelOnmouseover(sender,e);
}
private void internalClick2(object sender,System.EventArgs e)
{
this.XLabel1.Text = "Minsky";
}
}