2012-05-23 6 views
1

Я использую Ext.NET с VS2008, ASP.NET. У меня есть уникальная проблема, для которой я не смог найти какое-либо решение.Ext.NET Панель инструментов панели верхнего уровня GridPanel вызывает ошибку внутреннего сервера 500 на DirectEvent Не выражается в коде за

Существует GridPanel, а в TopBar есть кнопка удаления. В Grid используется модель 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 4268 частный текст/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 = «истинный» атрибут панели инструментов. Действительно странно, не так ли? Я только что проверил и проверил код, почему другие сетки работают, и у этого есть проблема. удаление этого атрибута полностью устранило ошибку. Я все еще не понимаю этого, но это то, что на самом деле произошло. Если я верну свой атрибут EnableOverflow, ошибка просто выскочит. поэтому я подтвердил это. в любом случае, спасибо. Я удалил круглые скобки во всем моем коде, который инкапсулировал # {} материал. –