因为好多页面都有一个类似的按钮,按钮事件的代码是差不多的,只是不同的页面对应不同的一个参数值。
想写一个通用函数,根据不同的按钮的ID设置不同的参数值,只是按钮的ID不知道怎么取?
请高手指教。

解决方案 »

  1.   

    给你据个例子:<asp:Button ID="Button1" runat="server" OnClick="MyButtonClick" Text="Button" />
    <asp:Button ID="Button2" runat="server" OnClick="MyButtonClick" Text="Button" />
    <asp:Button ID="Button3" runat="server" OnClick="MyButtonClick" Text="Button" />&nbsp;
    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    protected void MyButtonClick(object sender, EventArgs e)
    {
        Button button = sender as Button;
        Label1.Text = button.ID;
    }
      

  2.   

    设置按键的CommandName属性<asp:Button ID="Button1"  runat="server" OnCommand="MyButtonClick" CommandName="add" Text="Button" />
    <asp:Button ID="Button2" runat="server" OnCommand="MyButtonClick" CommandName="edit"  Text="Button" />
    <asp:Button ID="Button3" runat="server" OnCommand="MyButtonClick" CommandName= "del" Text="Button" />&nbsp;protected void MyButtonClick(object sender, CommandEventHandler e)
    {
        if(e.CommandName=="add")
        {
           //执行添加
        }
        else if(e.CommandName=="add")
        {
           //执行编辑
        }    else if(e.CommandName=="add")
        {
           //执行删除
         }}
      

  3.   

    2楼的方法是最常用的方法
    用CommandName命令参数
      

  4.   

    anliuty 哭过的天空 
    两位的方法要一个一个页面的改,工作量比较大。我想在一个地方写统一的函数获取。
    有没有更好的方法?
      

  5.   

    那就写一个方法,把BUTTON当这个方法的形参
      

  6.   

    zhiaini 
    我不想去每个页面做修改,只是在连接数据库操作的最后一步加个函数获取当前点击的按钮。
    所以不能把button当作参数来传。
      

  7.   

    如Button的Name为:Button1,Button2,Button3...等 则: Protected   void   buttonCommand_Click(object   sender,EventArgs   e) 

          if(sender==this.button1) 
          { 
                  ...... 
          } 
          if(sender==this.button2) 
          { 
                  ...... 
          } 
          if(sender==this.button3) 
          { 
                  ...... 
          } 
    } 假如执行的动作都一样,当然也可以做个循环来搞定。
      

  8.   

    Button   x   =   (Button)sender; 
    x.ID可以分辨
      

  9.   

    如果不是在列表控件的项中的按钮
    protected void  ButtonClick(object sender, EventArgs e)
    {
        Button button = sender as Button;
        string Id=button.ID; 
    }这个就行,
    当然如果你的按钮是在一个列表控件中,如GridView,DataList等,需要通过
    设置CommandName来做
      

  10.   

    Protected  void  buttonCommand_Click(object  sender,EventArgs  e) 

          if(sender==this.button1) 
          { 
                  ...... 
          } 
          if(sender==this.button2) 
          { 
                  ...... 
          } 
          if(sender==this.button3) 
          { 
                  ...... 
          } 
    } 这个方法应该可以,不过仍然需要查找所有的ID。
      

  11.   


    那就写个继承Page的基类,把按钮事件写在基本里,调用的页面继承基类
      

  12.   

    我还没搞清楚你说的是客户端的还是服务器端的<input type=button id=btn value=btn onclick="javascript:ck();"/>
    <script>
    function ck()
    {
       var btnId=event.scrElemnt.ID;//IE //对于ff的写法自己去查
    }
    </script>Protected  void  button_Click(object  sender,EventArgs  e)
    {
        string id=((Button)sender).clientID;
    }
      

  13.   

    哭过的天空
    那就写个继承Page的基类,把按钮事件写在基本里,调用的页面继承基类  
    这样的话,还是要每个页面都去改代码。niuniuhuang
    由于我想写一个新的页面或新的类去实现这个功能,所以还没有代码。
    也就是说,我的需求是和系统原先的代码无关的,无论哪个页面点了按钮,我都能取到按钮的ID或者按钮的其他属性