2013-10-01 70 views
0

我要检查,如果被点击按钮或者未方法如何检查方法中按钮是否被点击?

我试过,但它不工作

代码:

protected override void LoadViewState(object savedState) 
{ 
    base.LoadViewState(savedState); 

    //Here If (btnAddExperience_Click() is clicked) 
    { 
    GenerateControls(); 
    } 

    GenerateControls1(); 
} 


private void GenerateControls() 
{ 
    foreach (string i in NoOfControls) 
    { 
     VisaUserControl ctrl = (VisaUserControl)Page.LoadControl("VisaUserControl.ascx"); 

     ctrl.ID = i; 
     this.rpt1.Controls.Add(ctrl); 
     rpt1.Controls.Add(new LiteralControl("<BR>")); 
    } 
} 

protected void btnAddVisa_Click(object sender, EventArgs e) 
{ 
    Button thisButton = (Button)sender; 
    List<string> temp = null; 
    var uc = (VisaUserControl)this.LoadControl(@"VisaUserControl.ascx"); 

    string id = Guid.NewGuid().ToString(); 
    uc.ID = id; 

    temp = NoOfControls; 
    temp.Add(id); 
    NoOfControls = temp; 
    rpt1.Controls.Add(uc); 
    rpt1.Controls.Add(new LiteralControl("<BR>")); 
} 

private void GenerateControls1() 
{ 
    foreach (string i in NoOfControls) 
    { 
     ExperienceUserControl ctrl = (ExperienceUserControl)Page.LoadControl("ExperienceUserControl.ascx"); 

     ctrl.ID = i; 
     this.rpt1.Controls.Add(ctrl); 
     rpt2.Controls.Add(new LiteralControl("<BR>")); 
    } 
} 

protected void btnAddExperience_Click(object sender, EventArgs e) 
{ 
    List<string> temp = null; 
    var uc = (ExperienceUserControl)this.LoadControl(@"ExperienceUserControl.ascx"); 

    string id = Guid.NewGuid().ToString(); 
    uc.ID = id; 

    temp = NoOfControls; 
    temp.Add(id); 
    NoOfControls = temp; 
    rpt2.Controls.Add(uc); 
    rpt2.Controls.Add(new LiteralControl("<BR>")); 
} 

任何想法?在此先感谢

回答

1

我相信你应该能够检查:

Request.Form.Get("__EVENTTARGET") 
Request.Form.Get("__EVENTARGUMENT") 

为了做到这一点,其目标有控制的唯一ID,并且参数具有事件参数。我以前用过;然而,并非所有的东西都可以设定这些值此外,按钮点击事件不会触发,直到LoadViewState之后,所以你不能放置任何东西来设置布尔值。

1

btnAddExperience_Click事件将在LoadViewState事件后执行(可能读取this article会有好处)。

我会建议使用表单字段以指示该按钮被点击:

<script type="text/javascript"> 

    function setButtonClickedField() 
    { 
     document.getElementById("hidButtonClicked").value = "true"; 
    } 

    function resetButtonClickedField() 
    { 
     document.getElementById("hidButtonClicked").value = "false"; 
    } 

    // use this or a cross-browser attach event to attach the reset to the window/document onload event 
    var tempFunction; 

    if (window.onload) 
    { 
     tempFunction = window.onload; 
    } 

    window.onload = function() 
    { 
     if (tempFunction) 
     { 
      tempFunction(); 
     } 

     resetButtonClickedField(); 
    } 

</script> 

<input type="hidden" id="hidButtonClicked" name="hidButtonClicked" value="false" /> 

<asp:Button runat="server" ID="btnAddExperience" OnClick="btnAddExperience_Click" OnClientClick="setButtonClickedField" Text="Add Experience" /> 

然后在后面的代码:

protected override void LoadViewState(object savedState) 
{ 
    base.LoadViewState(savedState); 

    bool btnAddExperienceClicked = bool.Parse(Request.Form["hidButtonClicked"]); 

    if (btnAddExperienceClicked == true) 
    { 
     GenerateControls(); 
    } 

    GenerateControls1(); 
} 
0

你可以在你的窗体/控件声明一个布尔值来存储按钮的状态,然后使用按钮的MouseDown和MouseUp事件来设置你的布尔值。然后检查LoadViewState方法中的布尔值。

public partial class Form1 : Form 
{ 
    bool buttonClicked = false; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_MouseDown(object sender, MouseEventArgs e) 
    { 
     buttonClicked = true; 
    } 

    private void button1_MouseUp(object sender, MouseEventArgs e) 
    { 
     buttonClicked = false; 
    } 

    private void LoadViewState() 
    { 
     if (buttonClicked) 
     { 
      //Do something 
     } 
    } 
} 
相关问题