asp:Button没有调用服务器端功能

时间:2010-04-27 17:07:47

标签: c# asp.net

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

以下是代码片段:

<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()函数。我确实定义了该函数,以及正确的签名(对象,EventArgs)。有一件事可能值得注意的是,这段代码实际上是在ASCX里面,ASCX加载到另一个ASCX中,最后加载到ASPX中。

对此事的任何帮助或见解都将受到赞赏。谢谢!

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

2 个答案:

答案 0 :(得分:3)

如果您的GridView在Page_Prerender期间被数据绑定,则在处理回发事件时,相关的asp:按钮不存在。

尝试在Page_Load期间绑定gridview,或使用GridView的OnItemCommand事件而不是按钮的OnClick

答案 1 :(得分:3)

AutoWireupEvents是否设置为true?