问一个Page.IsPostBack,请高手指点

leiaming 2006-09-06 10:38:30
我在一个页面上有两个button,不想分开写clikc事件,我如何能在IsPostBack方法判断当前点了哪个button吗
...全文
184 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cat_hsfz 2006-09-06
  • 打赏
  • 举报
回复
不建议这样做,因为破坏了程序的结构。ASP.NET引入控件的概念,就是希望各控件独自负责自己内部的逻辑,不要将什么逻辑都提升到全Page的范围来写。

如果你有一个UserControl,里面有两个Button,例如Button1和Button2,都会被出发OnClick事件。那么这个UserControl可以添加两个事件:OnButton1Click和OnButton2Click,在Button1和Button2的OnClick时直接调用UserControl的这两个事件。通过这样,将事件向上冒泡,最终在页面上执行。
san12655874 2006-09-06
  • 打赏
  • 举报
回复
跟IsPostBack无关.....
private void Page_Load(object sender, System.EventArgs e)
{
if(IsPostBack)
{
string buttonName = ((Button)sender).ID;
switch(buttonName)
{
case "Button1":
....
}
}
}


试一下客户端的脚本:
<script>
document.onclick="fn()";
function fn()
{
if(event.srcElement.id=="button1")
{
document.all("hd").value="1";
}
else if(event.srcElement.id=="button2")
{
document.all("hd").value="2";
}
}
</script>
xzhy80 2006-09-06
  • 打赏
  • 举报
回复
可以分别给button.tag复值啊
然后判断一下tag就可以了阿
myminimouse 2006-09-06
  • 打赏
  • 举报
回复
非要这样做不可?
hz890 2006-09-06
  • 打赏
  • 举报
回复
试一下客户端的脚本:
<script>
document.onclick="fn()";
function fn()
{
if(event.srcElement.id=="button1")
{
document.all("hd").value="1";
}
else if(event.srcElement.id=="button2")
{
document.all("hd").value="2";
}
}
</script>
......
<input type=hidden runat=server id="hd">


......

private void Page_Load(object sender, System.EventArgs e)
{
if(IsPostBack)
{
switch(hd.value.Trim())
{
case "1":
...
break;
case "2":
...
break;
}
}
}

希望lz能用得上!!!
powerllr 2006-09-06
  • 打赏
  • 举报
回复
不明白把两个按钮事件写到一处有什么好处。
用户控件中有 btn1 btn2
写个委托
public delegate void Btn1_OnClick(object sender,System.EventArgs e);
public event Btn1_OnClick btn1_onClick;
在btn1 的事件里面写上
private void btn1_Click(object sender, System.EventArgs e)
{
if ( btn1_onClick!= null )
btn1_onClick(sender,e);
}
btn2 同上
在调用页面
如:用户控件命名空间为 a.a 调用页面为 a .b
InitializeComponent() 事件里面
((a.a)this.Page.FindControl("用户控件ID")).btn1_onClick+=new a.a.btn1_onClick(b_onSearch);
leiaming 2006-09-06
  • 打赏
  • 举报
回复
大家的方法都不是我想要的,我要写在ispostback里面判断,因为是自定义控件的两个按钮,无法调用到本页面的click事件,hz890() 的方法是我想要的,可惜这个方法有问题
xu8512 2006-09-06
  • 打赏
  • 举报
回复
给两个button都设置好commandname,
private bt_click(byval s as object,byval e as EventArgs)
if e.commandname=bt1 then
.............
elseif e.commandname=bt2 then
............
end if
如果有很多个button的话就用switch
hz890 2006-09-06
  • 打赏
  • 举报
回复

csShooter(Sharp Shooter)应该可行!!!
我再帮你整理一下:

private void Page_Load(object sender, System.EventArgs e)
{
if(IsPostBack)
{
string buttonName = ((Button)sender).ID;
switch(buttonName)
{
case "Button1":
....
}
}
}
xxbbww 2006-09-06
  • 打赏
  • 举报
回复
楼上都解决了,就是事件委托到同一个方法,再判断是哪个botton触发的
babyuse 2006-09-06
  • 打赏
  • 举报
回复
bt.Click += new EventHandler(OnClick);
protected void OnClick(object sender, EventArgs e)
{
string buttonName = ((Button)sender).Name;
switch(buttonName)
{
case "button1":
....
}

}
z32256226 2006-09-06
  • 打赏
  • 举报
回复
<asp:Button ID="btn1" CommandArgument="btn1" runat="server" Text="1" OnClick="ButtonClick" />
<asp:Button ID="btn2" CommandArgument="btn2" runat="server" Text="2" OnClick="ButtonClick" />

c#
protected void ButtonClick(object sender, EventArgs e)
{
string arg = ((LinkButton)sender).CommandArgument.ToString();
switch (arg)
{
case "btn1":
........
break;
case "btn2":
........
break;
}
}
leiaming 2006-09-06
  • 打赏
  • 举报
回复
因为我这两个按钮是写在自定义控件里面的,我现在想在调用它的页面捕获它们各自的click事件
csShooter 2006-09-06
  • 打赏
  • 举报
回复
跟IsPostBack无关


onClick(object sender,....
string buttonName = ((Button)sender).Name;
switch(buttonName)
{
case "button1":
....
}
damnhe 2006-09-06
  • 打赏
  • 举报
回复
虽然这样做确实没什么必要,
但ComnmandName属性还是要好好了解,
因为有些动态添加的控件无法写OnClick事件,
必须通过ItemCommand事件对ComnmandName判别来进行相应的处理.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧