我在ASP .Net中使用LinkButton(将其视为Button)。我需要使用后面的C#代码以编程方式单击该按钮。我怎样才能实现这个目标..?
答案 0 :(得分: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>
答案 1 :(得分: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>");
}
但是有一个问题。您可能会遇到事件验证错误。在这种情况下,您可能必须按如下方式禁用事件验证:
<%@ Page Language="C#" EnableEventValidation="false" ... %>
我不推荐它。还有其他方法可以克服它..但这是一个不同的谷歌搜索:)
答案 2 :(得分: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
}
P.S。 从代码后面调用事件处理程序是一种不好的做法。事件处理程序旨在触发一些客户端操作。