2012-05-23 29 views
1

我使用VS2008,ASP.NET使用Ext.NET。我有一個獨特的問題,我無法找到任何解決方案。Ext.NET GridPanel頂欄工具欄按鈕引發DirectEvent上的內部服務器錯誤500在代碼後面沒有提出

有一個GridPanel,並在TopBar中有一個刪除按鈕。網格使用RowSelection模型。選擇行後,用戶單擊刪除按鈕。一個客戶端事件引發的確認以下是代碼片段

<ext:Button ID="btnDelete" runat="server" Text="Delete" Icon="Delete"> 
        <DirectEvents> 
         <Click OnEvent="Evt_Delete"> 
         <ExtraParams> 
         <ext:Parameter Name="recordId" Value="(#{grdSanction}).selModel.getSelected().data.VoucherID" Mode="Raw" /> 
         </ExtraParams> 

          <Confirmation Message="Do you really want to delete sanction?" ConfirmRequest="true"/> 
         </Click> 
        </DirectEvents> 
       </ext:Button> 

但問題是,我點擊後是我碰到下面的信息基本上是500內部服務器錯誤。

下面是我找到小提琴手:

結果協議主機URL體緩存Content-Type的歷程述評自定義
1 500 HTTP瑪瑙/pages/sanction.aspx?_dc=1337773867270 4,268私人的text/html; charset = utf-8 chrome:920

VS2008的調試器不起作用,因爲後面的代碼事件從未引發。 工具欄上的其他按鈕工作得很好。有誰知道我在這裏錯過了什麼?

回答

1

我想你只需要從#{grdSantion}附近刪除圓括號。

// Not OK 
(#{grdSanction}).selModel.getSelected().data.VoucherID 

// OK 
#{grdSanction}.selModel.getSelected().data.VoucherID 

以下示例演示了完整的方案,並且按照您的要求工作。

<%@ Page Language="C#" %> 

<%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %> 

<script runat="server"> 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!X.IsAjaxRequest) 
     { 
      var store = this.GridPanel1.GetStore(); 

      store.DataSource = this.Data; 
      store.DataBind(); 
     } 
    } 

    private object[] Data 
    { 
     get 
     { 
      return new object[] 
      { 
       new object[] { "3m Co", 71.72, 0.02, 0.03, "9/1 12:00am" }, 
       new object[] { "Alcoa Inc", 29.01, 0.42, 1.47, "9/1 12:00am" }, 
       new object[] { "Altria Group Inc", 83.81, 0.28, 0.34, "9/1 12:00am" }, 
       new object[] { "American Express Company", 52.55, 0.01, 0.02, "9/1 12:00am" }, 
       new object[] { "American International Group, Inc.", 64.13, 0.31, 0.49, "9/1 12:00am" }, 
       new object[] { "AT&T Inc.", 31.61, -0.48, -1.54, "9/1 12:00am" }, 
       new object[] { "Boeing Co.", 75.43, 0.53, 0.71, "9/1 12:00am" }, 
       new object[] { "Caterpillar Inc.", 67.27, 0.92, 1.39, "9/1 12:00am" } 
      }; 
     } 
    } 

    protected void Button1_Click(object sender, DirectEventArgs e) 
    { 
     X.Msg.Notify("Company", e.ExtraParams["company"]).Show(); 
    } 
</script> 

<!DOCTYPE html> 

<html> 
<head runat="server"> 
    <title>Ext.NET Example</title> 
</head> 
<body> 
<form runat="server"> 
    <ext:ResourceManager runat="server" /> 

    <ext:GridPanel 
     ID="GridPanel1" 
     runat="server" 
     Title="Array Grid" 
     Width="350" 
     Height="215"> 
     <TopBar> 
      <ext:Toolbar runat="server"> 
       <Items> 
        <ext:Button runat="server" Text="Delete" Icon="Delete"> 
         <DirectEvents> 
          <Click OnEvent="Button1_Click"> 
          <ExtraParams> 
           <ext:Parameter Name="company" Value="#{GridPanel1}.selModel.getSelected().data.company" Mode="Raw" /> 
          </ExtraParams> 
           <Confirmation Message="Do you really want to delete sanction?" ConfirmRequest="true"/> 
          </Click> 
         </DirectEvents> 
        </ext:Button> 
       </Items> 
      </ext:Toolbar> 
     </TopBar> 
     <Store> 
      <ext:Store runat="server"> 
       <Reader> 
        <ext:ArrayReader> 
         <Fields> 
          <ext:RecordField Name="company" /> 
         </Fields> 
        </ext:ArrayReader> 
       </Reader> 
      </ext:Store> 
     </Store> 
     <ColumnModel runat="server"> 
      <Columns> 
       <ext:Column ColumnID="Company" Header="Company" DataIndex="company" /> 
      </Columns> 
     </ColumnModel> 
     <SelectionModel> 
      <ext:RowSelectionModel runat="server" SingleSelect="true" /> 
     </SelectionModel> 
    </ext:GridPanel> 
</form> 
</body> 
</html> 
+0

感謝您的回答。但奇怪的是,我發現問題在於... EnableOverflow =「true」屬性的工具欄。真的很奇怪是不是?我只是檢查並檢查了代碼爲什麼其他網格正在工作,並且這個問題有問題。去掉這個屬性完全消除了錯誤。我仍然不明白,但那是真正發生的事情。如果我放回EnableOverflow屬性,則只會彈出錯誤。所以我確認了它。不管怎樣,謝謝。我在我的代碼中刪除了包含#{}內容的圓括號。 –

相關問題