protected void LinkBt_Click(object sender, EventArgs e)
    {
        string LBName = ((ImageButton)sender).ID.ToString().Trim();
        switch (LBName)
        {
            case "ImageButton_Mp3":
                repeater_ringtone.DataSource = comc.GetDataSet(17).Tables[0];
                repeater_ringtone.DataBind();
                break;
            case "ImageButton_Japan":
                repeater_ringtone.DataSource = comc.GetJapaneseRingtones(PageSize, PageIndex, browseType);
                repeater_ringtone.DataBind();
                break;
            case "ImageButton_Corea":
                repeater_ringtone.DataSource = comc.GetKRingtones(PageSize, PageIndex, browseType);
                repeater_ringtone.DataBind();
                break;
            case "ImageButton_Eng":
                repeater_ringtone.DataSource = comc.getEnglishRingtones(PageSize, PageIndex, browseType);
                repeater_ringtone.DataBind();
                break;
        }
    }
想把里面的东西写在一个函数中,如下:
  private void BindKingtone()
    {
         string LBName = ((ImageButton)sender).ID.ToString().Trim();
        switch (LBName)
        {
            case "ImageButton_Mp3":
                repeater_ringtone.DataSource = comc.GetDataSet(17).Tables[0];
                repeater_ringtone.DataBind();
                break;
            case "ImageButton_Japan":
                repeater_ringtone.DataSource = comc.GetJapaneseRingtones(PageSize, PageIndex, browseType);
                repeater_ringtone.DataBind();
                break;
            case "ImageButton_Corea":
                repeater_ringtone.DataSource = comc.GetKRingtones(PageSize, PageIndex, browseType);
                repeater_ringtone.DataBind();
                break;
            case "ImageButton_Eng":
                repeater_ringtone.DataSource = comc.getEnglishRingtones(PageSize, PageIndex, browseType);
                repeater_ringtone.DataBind();
                break;
        }    }上面的事件就直接调用下面的函数,哪位高手指点一下,该怎么做呢

解决方案 »

  1.   

    protected void LinkBt_Click(object sender, EventArgs e) 

        BindKingtone(sender)
    }
    private void BindKingtone(object sender) 
    {
      ...
    }
      

  2.   


    运行时会出错:无法将类型为“ASP.ringtones_aspx”的对象强制转换为类型“System.Web.UI.WebControls.ImageButton”。
      

  3.   

    protected void LinkBt_Click(object sender, EventArgs e) 

        string LBName = ((ImageButton)sender).ID.ToString().Trim(); 
        BindKingtone(LBName ) 

    private void BindKingtone(string LBName) 

      ... 
    }
      

  4.   


    这样不就可以了
    protected void LinkBt_Click(object sender, EventArgs e) 
        { 
            string LBName = ((ImageButton)sender).ID.ToString().Trim(); 
            BindKingtone(LBName);
        } 
    private void BindKingtone(string LBName) 
        { 
            switch (LBName) 
            { 
                case "ImageButton_Mp3": 
                    repeater_ringtone.DataSource = comc.GetDataSet(17).Tables[0]; 
                    repeater_ringtone.DataBind(); 
                    break; 
                case "ImageButton_Japan": 
                    repeater_ringtone.DataSource = comc.GetJapaneseRingtones(PageSize, PageIndex, browseType); 
                    repeater_ringtone.DataBind(); 
                    break; 
                case "ImageButton_Corea": 
                    repeater_ringtone.DataSource = comc.GetKRingtones(PageSize, PageIndex, browseType); 
                    repeater_ringtone.DataBind(); 
                    break; 
                case "ImageButton_Eng": 
                    repeater_ringtone.DataSource = comc.getEnglishRingtones(PageSize, PageIndex, browseType); 
                    repeater_ringtone.DataBind(); 
                    break; 
            }     } 
      

  5.   

    但是我在别的事件中怎么知道这个LBName
      

  6.   

    别的事件?什么意思?同样道理:string LBName = ((ImageButton)sender).ID.ToString().Trim(); 
      

  7.   

    别的事件这样写的会出错的,无法将类型为“ASP.ringtones_aspx”的对象强制转换为类型“System.Web.UI.WebControls.ImageButton”。
      

  8.   

            private void BindKingtone(object sender)
            {
                if (sender.GetType().Name = "ImageButton")   //判断是否是ImageButton
                {
                    string LBName = ((ImageButton)sender).ID.ToString().Trim();
                    switch (LBName)
                    {
                        case "ImageButton_Mp3":
                            repeater_ringtone.DataSource = comc.GetDataSet(17).Tables[0];
                            repeater_ringtone.DataBind();
                            break;
                        case "ImageButton_Japan":
                            repeater_ringtone.DataSource = comc.GetJapaneseRingtones(PageSize, PageIndex, browseType);
                            repeater_ringtone.DataBind();
                            break;
                        case "ImageButton_Corea":
                            repeater_ringtone.DataSource = comc.GetKRingtones(PageSize, PageIndex, browseType);
                            repeater_ringtone.DataBind();
                            break;
                        case "ImageButton_Eng":
                            repeater_ringtone.DataSource = comc.getEnglishRingtones(PageSize, PageIndex, browseType);
                            repeater_ringtone.DataBind();
                            break;
                    }
                }
            } 
      

  9.   

    其实主要是在分页和Page_Load事件中调用
      

  10.   

    那你在别的事件里把传给BindKingtone函数的参数设置下不就好了吗
      

  11.   

    把所有按钮的事件转到一个事件不就可以了???imagebutton1.Click +=new EventHandler(LinkBt_Click);
    imagebutton2.Click +=new EventHandler(LinkBt_Click);
    imagebutton3.Click +=new EventHandler(LinkBt_Click);
    imagebutton4.Click +=new EventHandler(LinkBt_Click);以上是代码实现,如果在设计器内,别双击图片按钮,而是在属性窗口把按钮的Click事件绑定到同一个事件中。