2012-02-02 95 views
0

我在ASP .Net中使用LinkBut​​ton(将其视为按钮)。我需要使用后面的C#代码以编程方式单击该按钮。我怎样才能做到这一点..?如何设置按钮以编程方式点击

+0

c#是服务器端,你确定你不想使用客户端的JavaScript? – Niklas 2012-02-02 08:20:43

+0

是否有任何问题为点击事件添加事件处理程序? – Reniuz 2012-02-02 08:21:00

+0

事件处理程序调用一些逻辑。没有其他方式可以调用该逻辑? – Aphelion 2012-02-02 08:26:57

回答

4

不要使用事件处理程序作为方法,它们的唯一目的是处理事件。所有的功能应该封装在可以从事件处理程序中调用的方法中,以及从需要它的任何地方调用。

protected void Button_Click(sender As Object, e As CommandEventArgs) 
{ 
    int id=int32.Parse(e.CommandArgument.ToString()); 
    doSomething(id); 
} 

然后,你可以也从页面的加载事件致电例如这种方法:

protected void Page_Load(object sender, EventArgs e) 
{ 
    //get the ID of the first record in GridView's DataSource here or where you databind the GridView 
    doSomething(id); 
} 

public void doSomething(int id) { //do something } 

如何从GridView的记录通过ID为CommandArgument

<asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="Button1" runat="server" CommandArgument='<%#Eval("IdColumn")%>' OnCommand="Button_Click" Text="Do Something"> 
      </asp:LinkButton> 
     </ItemTemplate> 
</asp:TemplateField> 
+0

它的工作很酷...... :) – 2012-02-02 10:28:49

1

嗯,我不太清楚你想在这里实现什么。但1个方法是简单地调用事件处理程序的方法代码。

但是,如果你有兴趣发送响应返回给客户端,并采取按一下按钮作为一个新的请求,你可以试试这个

ASPX:

<asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton1</asp:LinkButton> 
    <br /> 
    <br /> 
    <asp:LinkButton ID="LinkButton2" runat="server" onclick="LinkButton2_Click">LinkButton2</asp:LinkButton> 

C#:

protected void LinkButton1_Click(object sender, EventArgs e) 
    { 
     Response.Write("I was programatically called!"); 
    } 

    protected void LinkButton2_Click(object sender, EventArgs e) 
    { 
     string pbref = Page.GetPostBackEventReference(LinkButton1); 
     Page.ClientScript.RegisterClientScriptBlock(GetType(), "KeyName", "<script>" + pbref + "</script>"); 
    } 

但是有1个问题。您可能会遇到事件验证错误。在这种情况下,您可能必须禁用事件验证,如下所示:

<%@ Page Language="C#" EnableEventValidation="false" ... %> 

我不会推荐它。还有其他方法可以解决它..但这是一个不同的谷歌搜索:)

1
private void Page_Load() 
{ 
    if (!Page.IsPostBack) 
    { 
     //when the pages is rendered and loaded for the first time execution goes here 
     //so... call the method that selects the first row 
     SelectsFirtsRow(); 
    } 
    else 
    { 
    //do something else 
    ... 
    } 
} 
protected void FirstRowLinkButton_Click(object sender, EventArgs e) 
{ 
    //move all the code that selects the first row to a method. 
    //you can also supply some arguments if they are needed for method execution... that's up to you 
    SelectsFirtsRow(); 
} 
public void SelectsFirtsRow(); 
{ 
    //your logic goes here. i.e. selects the first row 
} 

ps从代码背后调用事件处理程序是一种不好的做法。事件处理程序旨在激发一些客户端操作。

相关问题