Как установить кнопку нажатой программно - PullRequest
0 голосов
/ 02 февраля 2012

Я использую LinkButton (рассматриваю это как кнопку) в ASP .Net.Мне нужно нажать на эту кнопку программно, используя код C # позади.Как мне этого добиться? ..

Ответы [ 3 ]

4 голосов
/ 02 февраля 2012

Не используйте обработчики событий в качестве методов, их единственная цель - обрабатывать события.Все функциональные возможности должны быть заключены в методы, которые можно вызывать из обработчика событий, а также из любого места, где вам это необходимо.

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 как CommandArgument:

<asp:TemplateField>
      <ItemTemplate>
          <asp:LinkButton ID="Button1" runat="server" CommandArgument='<%#Eval("IdColumn")%>' OnCommand="Button_Click" Text="Do Something">
          </asp:LinkButton>
       </ItemTemplate>
</asp:TemplateField>
1 голос
/ 02 февраля 2012
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
}

p.s. вызывать обработчики событий из кода - плохая практика. обработчики событий предназначены для запуска некоторых действий на стороне клиента.

1 голос
/ 02 февраля 2012

Ну, я не совсем уверен, чего вы здесь добиваетесь.но 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" ... %>

Я бы не рекомендовал это делать.Есть другие способы преодолеть это .. но это другой поиск Google:)

...