C# asp:按钮未调用服务器端函数

C# asp:按钮未调用服务器端函数,c#,asp.net,C#,Asp.net,我正在通过模板字段实例化数据绑定asp:GridView中的asp:按钮。有些按钮应该调用服务器端函数,但出于某种奇怪的原因,它没有。当你点击它们时,所有的按钮都会触发一个回发到当前页面的操作,什么都不做,实际上只是重新加载页面 下面是一段代码: <asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" CssClass="l2 submissions" ShowHeader="false"> <C

我正在通过模板字段实例化数据绑定asp:GridView中的asp:按钮。有些按钮应该调用服务器端函数,但出于某种奇怪的原因,它没有。当你点击它们时,所有的按钮都会触发一个回发到当前页面的操作,什么都不做,实际上只是重新加载页面

下面是一段代码:

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false" CssClass="l2 submissions" ShowHeader="false">
    <Columns>      

        <asp:TemplateField>            
            <ItemTemplate><asp:Panel ID="swatchpanel" CssClass='<%# Bind("status") %>' runat="server"></asp:Panel></ItemTemplate>                
            <ItemStyle Width="50px" CssClass="sw" />
        </asp:TemplateField>

        <asp:BoundField DataField="description" ReadOnly="true">                                
        </asp:BoundField>

        <asp:BoundField DataField="owner" ReadOnly="true">
            <ItemStyle Font-Italic="true" />
        </asp:BoundField>

        <asp:BoundField DataField="last-modified" ReadOnly="true">
            <ItemStyle Width="100px" />
        </asp:BoundField>

        <asp:TemplateField>
            <ItemTemplate>
                <asp:Button ID="viewBtn" cssclass='<%# Bind("sid") %>' runat="server" Text="View" OnClick="viewBtnClick" />
            </ItemTemplate>
        </asp:TemplateField>                                         

    </Columns>
</asp:GridView>

上面的viewBtn应该调用服务器端的viewBtnClick()函数。我确实已经定义了该函数,以及一个适当的签名(object、EventArgs)。值得注意的一点是,该代码实际上位于ASCX中,它被加载到另一个ASCX中,最后加载到一个ASPX中

对此事的任何帮助或见解都将不胜感激。谢谢


(哦,请不要介意我无用的HTML/CSS语义-这仍然处于非常非常早期的阶段:p)

如果您的GridView在Page_Prerender期间进行数据绑定,则在处理回发事件时,所讨论的asp:按钮不存在


尝试在页面加载期间绑定gridview,或者使用gridview的
OnItemCommand
事件,而不是按钮的
OnClick

AutoWireupEvents是否设置为true?

这是一个很好的见解,但是我的gridview在页面加载期间已经被数据绑定。不过,我想我也会调查一下蒙特蒙德。谢谢你!然而,我确实尝试在GridView之外使用一个常规的asp:按钮,但这也没有触发它的服务器端钩子。奇怪。是的,绝对是pIs这个包含的子ascx是否在某个时候被动态添加到控制树中?您可能在这里看到了一些东西。是的,你说得对。基于GET参数,正在将ASCX动态加载到父ASCX中。由于某些原因,当控件在ASCX的OnInit()期间而不是在Page_Load()上实例化时,控件的事件处理程序工作正常。我把这个标记为答案,因为这让我走上了正确的道路。谢谢