我在我的页面上显示来自DataTable的信息,并希望添加一些排序功能,这些功能有点超出了直接的列排序。因此,我一直试图将LinkButtons放在我的GridView的HeaderItems中,后者返回到在重新加载页面之前更改会话信息的函数。
点击我的链接 DOES 会导致回复,但他们似乎没有生成任何 OnClick 事件,因为我的 OnClick 功能不在被执行。我将AutoEventWireup
设置为true,如果我将链接移出GridView,它们可以正常工作。
我通过创建常规锚点,将查询附加到 hrefs 并在页面加载时检查它来解决这个问题,但我更喜欢C#进行繁重的工作。有什么想法吗?
更新:澄清控件的ID与 OnClick 函数名称相匹配。
答案 0 :(得分:2)
你在正确的轨道上,但尝试使用LinkButton的命令名称/参数。尝试这样的事情:
在TemplateField的HeaderTemplate中,添加一个LinkButton并设置CommandName和CommandArgument
<HeaderTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="sort" CommandArgument="Products" Text="<%# Bind('ProductName")' />
</HeaderTemplate>
接下来,设置GridView的RowCommand事件
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "sort")
{
//Now sort by e.CommandArgument
}
}
通过这种方式,您可以对LinkButton进行大量控制,并且无需做太多工作来跟踪它们。
答案 1 :(得分:0)
在ASP.Net中对动态生成的控件使用事件时要记住两件事:
答案 2 :(得分:0)
您可以指定单击链接时要调用的方法。
<HeaderTemplate>
<asp:LinkButton
ID="lnkHdr1"
Text="Hdr1"
OnCommand="lnkHdr1_OnCommand"
CommandArgument="Hdr1"
runat="server"></asp:LinkButton>
</HeaderTemplate>
代码隐藏:
protected void lnkHdr1_OnCommand(object sender, CommandEventArgs e)
{
// e.CommandArgument
}