以下是控件源码:
using System;
using System.Web.UI;
using System.Web;
using System.Collections.Specialized;
namespace LianZhi.WebControl
{
public class BtEventArgs:EventArgs 
{
private string _BtName="bt1";
public string BTNAME
{
set
{_BtName=value;}
get
{return _BtName;}
}
public BtEventArgs()
{}
}
/// <summary>
/// htmButton 的摘要说明。
/// </summary>
public class htmButton:Control,IPostBackEventHandler
{
public delegate void BtEventHandler(object sender, BtEventArgs fe);
public event BtEventHandler LZBtClick;     private string _value="提交";
private string _formofsubmitcondition="Reg"; public string FormOfSubmitCondition
{
set
{
_formofsubmitcondition=value;
}
} public string Value
{
set
{
_value=value;
}
}

public htmButton()
{

}

protected override void Render(HtmlTextWriter writer)
{
base.Render (writer);
   
string submitscript=@"<script language=JavaScript>
function submitcheck()
{
if(document.all("""+_formofsubmitcondition+@""").value==""true"")
{ window.Form1.submit();
}
}
</script>
";
if (!this.Page.IsClientScriptBlockRegistered("submitcheck"))
{
 
writer.Write(submitscript);
this.Page.RegisterClientScriptBlock("submitcheck",submitscript);

}
writer.Write(@"<INPUT type=button value="""+_value+@""" onclick=""javascript:submitcheck();"" >"); // writer.RenderBeginTag("INPUT");
//
// writer.AddAttribute("type","button");
// writer.AddAttribute("value",_value);
// writer.AddAttribute("onclick","javascript:submitcheck();");
//writer.RenderEndTag();
}
#region IPostBackEventHandler 成员 public void RaisePostBackEvent(string eventArgument)
{
// TODO:  添加 htmButton.RaisePostBackEvent 实现 BtEventArgs e=new BtEventArgs();
LZBtClick(new object(),e); }

#endregion
}
}
asp.net里调用这个控件,调用如下:override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
HtmButton1.LZBtClick +=new LianZhi.WebControl.htmButton.BtEventHandler(this.Onclick);
}public void Onclick(object sender,LianZhi.WebControl.BtEventArgs e)
{
Response.Write("Hello!");
}按钮按后页面得到提交刷新了,可是不会响应Onclick里面的代码这是怎么回事?
请教高手们.

解决方案 »

  1.   

    there are a lot of problems in your code, but for now, just give your <input> a name and change its type to submitwriter.Write(@"<INPUT type=submit value="""+_value+@""" onclick=""javascript:submitcheck();"" name='" + this.UniqueID+ "' >");
      

  2.   

    多谢思归的指点,可是我不把type 设为submit 是因为我想把提交的条件在页面上使用的时候再定义。 type一定要submit么 我是想通过这段代码提交表单的
    string submitscript=@"<script language=JavaScript>
    function submitcheck()
    {
    if(document.all("""+_formofsubmitcondition+@""").value==""true"")
    { window.Form1.submit();
    }
    }
    </script>
    ";
      

  3.   

    好了,多谢思归的帮助。得到启发我修改了一下javascript也达到了相同的效果!