2013-04-09 20 views
1

考慮下面的ASP.NET代碼:ASP.NET回發不打正確的方法

<asp:UpdatePanel runat="server" ChildrenAsTriggers="true"> 
      <ContentTemplate> 
       <asp:MultiView runat="server" ID="MultiView" ActiveViewIndex="0"> 
        <asp:View runat="server"> 
        </asp:View> 
        <asp:View runat="server"> 
         <p><img alt="Loading..." src="/global/images/ajax-mini-loader.gif" style="vertical-align: middle;" />&nbsp;Loading...</p> 
        </asp:View> 
        <asp:View runat="server"> 
         <asp:GridView runat="server" ID="WarrantyView" OnDataBound="WarrantyView_DataBound" AutoGenerateColumns="false" ItemType="WarrantySystem.Data.ServiceCompany"> 
          <Columns> 
           <asp:BoundField HeaderText="Name" DataField="Name" /> 
           <asp:BoundField HeaderText="Telephone" DataField="Telephone" /> 
           <asp:BoundField HeaderText="Email" DataField="Email" /> 
           <asp:BoundField HeaderText="Telephone 24/7" DataField="Telephone247" /> 
           <asp:BoundField HeaderText="Email 24/7" DataField="Email247" /> 
           <asp:TemplateField HeaderText="Actions"> 
            <ItemTemplate> 
             <asp:Button runat="server" ID="btnEdit" CommandName="Edit" CommandArgument="<%# Item.ID %>" Text="Edit" /> 
             <asp:Button runat="server" ID="btnDelete" CommandName="Delete" CommandArgument="<%# Item.ID %>" Text="Delete" OnCommand="btnDelete_Command"/> 
            </ItemTemplate> 
           </asp:TemplateField> 
          </Columns> 
         </asp:GridView> 
        </asp:View> 
        <asp:View runat="server"> 
         <p>Your data could no be loaded at this time.</p> 
        </asp:View> 
       </asp:MultiView> 
       <asp:Timer runat="server" ID="tmrLoadData" Enabled="true" Interval="1" OnTick="tmrLoadData_Tick" /> 
      </ContentTemplate> 
     </asp:UpdatePanel> 

當點擊btnDelete,回發事件發生時的Page_Load,從不打btnDelete_Command,因爲它應該。我失去了爲什麼!

編輯:同樣的問題發生在編輯按鈕...好的,所以在這個例子中,沒有OnClick或OnCommand事件,但我剛剛測試過...它做同樣的事情。

工作原理:

  • 該頁面加載和顯示一個空視圖。
  • 計時器滴答並開始加載數據,並顯示數據加載視圖。
  • 數據加載完成後,顯示數據視圖。
  • 單擊編輯時,頁面應該紅色修改到編輯頁面。
  • 點擊刪除時,頁面應該刪除條目。

編輯:由於每個用戶評論(服務器端代碼指令代碼):

protected void btnDelete_Command(object sender, CommandEventArgs e) 
    { 
     bool result = this.mgr.DeleteServiceCompany(Int32.Parse(e.CommandArgument.ToString())); 
    } 

    protected void btnEdit_Command(object sender, CommandEventArgs e) 
    { 
     Response.Redirect("ServiceCompany.aspx?id=" + e.CommandArgument.ToString()); 
    } 
+0

你能告訴我們你的代碼的命令:編輯和刪除。 – 2013-04-09 15:21:05

+0

@JackPettinger,請參閱編輯。沒有什麼不同,因爲他們根本沒有被擊中! :-( – series0ne 2013-04-09 15:24:41

+0

它在'gridview'中,使用'gridview'的'rowcommand'事件 – 2013-04-09 15:27:38

回答

1

使用的GridView的RowCommand事件觸發您的EditDelete命令。

將此添加到您的GridView標記中。

OnRowCommand="WarrantyView_RowCommand" 

也改變了CommandName文本

CommandName="Modify" // change the name here 
CommandName="Remove" // change the name here 

而且事件中

protected void WarrantyView_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Modify") 
    { 
     // your edit logic 
    } 
    if (e.CommandName == "Remove") 
    { 
     // your delete logic 
    } 
} 

我也建議你改變CommandName屬性的名稱。
更改Edit或許Modify
變化Delete或許Remove
原因是它們內置gridview命令

注:確保您的ViewState是在所有相關的地方啓用了。這不適用于禁用ViewState。

+0

感謝您的額外信息。我不知道編輯和刪除是由GridView使用。不幸的是,這也不起作用。 – series0ne 2013-04-09 15:50:25

+0

請更新您到目前爲止已更改內容的代碼。也可以通過刪除更新面板進行快速檢查。 – 2013-04-09 15:57:10

+0

請在答案底部查看我的記錄。已排序,已接受答案。 – series0ne 2013-04-09 16:03:45