2012-02-02 71 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從代碼背後調用事件處理程序是一種不好的做法。事件處理程序旨在激發一些客戶端操作。

相關問題