2013-03-13 24 views
2
<asp:TemplateField> 
    <ItemTemplate> 
     <asp:Button ID="lbShowGroup" CommandName="View" CommandArgument='<%# Eval("Topic") %>' 
          runat="server" Text="View"></asp:Button> 
    </ItemTemplate> 
</asp:TemplateField> 

後面的代碼工作:按鈕控制不與RowCommand事件

protected void tblTopics_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "View") 
    { 
     Response.Redirect("Group.aspx?Topic=" + e.CommandArgument.ToString()); 
    } 
} 

調試未達到RowCommand事件,但是當我的按鈕控制變成LinkButton,它的工作原理。怎麼了?

+0

你是否在回傳數據綁定你的網格? – 2013-03-13 13:59:19

+0

它可以與Linkbutton一起使用,不與按鈕 – 2013-03-13 14:01:12

+0

也許因爲您使用['postbackurl'](http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.linkbutton.postbackurl.aspx)屬性直接從linkbutton重定向。至少在你提到「LinkBut​​ton」起作用時,我想到了這一點。 – 2013-03-13 14:02:37

回答

4

你是否在回傳上綁定了你的網格?

您必須上回發綁定你的網格,Page_Load,只有當事情已經改變引起GridView重新裝載數據(f.e。排序,分頁),只有在適當的偶數處理程序。

所以包裹綁定在PostBack -check:

protected void Page_Load(Object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     DataBindGrid(); 
    } 
} 

另一個可能的原因:是否禁用ViewState地方?

0

我有同樣的問題,並發現我的問題是在母版頁EnableViewState="false"

我將母版頁改爲使用EnableViewState="True"
並按預期啓動了rowcommand事件。