2012-02-01 28 views
1

我使用MVC3 + Ext.NET控制器MVC Ext.NET,如何从一个模型

这个创建数据绑定是我的模型:

namespace MvcApplication32.Models 
{ 
    public class Subsystem 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
     public string KB { get; set; } 
     public DateTime StartTime { get; set; } 
     public DateTime EndTime{ get; set; } 
     public DateTime BuildTime { get; set; } 
     public bool Result{ get; set; } 

     public Subsystem[] GetSubsystems() 
     { 
      return new Subsystem[] 
         { 
          new Subsystem() {Id=1, Name = "A", KB="KB112066", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
          new Subsystem() {Id=2, Name = "B", KB="KB143226", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=false}, 
          new Subsystem() {Id=3, Name = "C", KB="KB115326", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
          new Subsystem() {Id=4, Name = "D", KB="KB121425", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
         }; 
     } 

...

这是我的控制器(没有什么特别)

namespace MvcApplication32.Controllers 
{ 
    public class Temp1Controller : Controller 
    { 
     // 
     // GET: /Temp1/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

这是我的看法:

<script runat="server"> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!X.IsAjaxRequest) 
    { 
     Subsystem s = new Subsystem(); 
     this.Store1.DataSource = s.GetSubsystems(); 
     this.Store1.DataBind(); 
    } 
} 
. 
. 

<script type="text/javascript"> 
    var template = '<span style="color:{0};">{1}</span>'; 

    var change = function (value) { 
     return String.format(template, (value > 0) ? "green" : "red", value); 
    }; 

    var pctChange = function (value) { 
     return String.format(template, (value > 0) ? "green" : "red", value + "%"); 
    }; 
    </script> 


    <ext:ResourceManager ID="ResourceManager1" runat="server" /> 

    <h1>Grid Panel --> Array Grid --> Simple Array Grid</h1> 

    <ext:GridPanel 
     ID="GridPanel1" 
     runat="server" 
     StripeRows="true" 
     Title="Array Grid" 
     TrackMouseOver="true" 
     Width="600" 
     Height="350" 
     AutoExpandColumn="name"> 
     <Store> 
      <ext:Store ID="Store1" runat="server"> 
       <Reader> 
        <ext:ArrayReader> 
         <Fields> 
          <ext:RecordField Name="id" Type=Int /> 
          <ext:RecordField Name="name" Type=String/> 
          <ext:RecordField Name="kb" Type=String /> 
          <ext:RecordField Name="startTime" Type='date' /> 
          <ext:RecordField Name="endTime" Type=String DateFormat="yyyy-MM-dd" /> 
          <ext:RecordField Name="buildTime" Type=Auto /> 
          <ext:RecordField Name="status" Type=Boolean /> 
         </Fields> 
        </ext:ArrayReader> 
       </Reader> 
      </ext:Store> 
     </Store> 
     <ColumnModel ID="ColumnModel1" runat="server"> 
      <Columns> 
       <ext:Column ColumnID="Id" Header="Id" DataIndex="id" /> 
       <ext:Column ColumnID="Name" Header="Name" DataIndex="name" /> 
       <ext:Column ColumnID="KB" Header="KB" DataIndex="kb" /> 
       <ext:DateColumn ColumnID="StartTime" Header="StartTime" DataIndex="startTime" Format="HH:mm:ss" /> 
       <ext:DateColumn ColumnID="EndTime" Header="EndTime" DataIndex="endTime" /> 
       <ext:DateColumn ColumnID="BuildTime" Header="BuildTime" DataIndex="buildTime" /> 
       <ext:Column ColumnID="Status" Header="Status" DataIndex="status" /> 
      </Columns> 
     </ColumnModel> 
     <SelectionModel> 
      <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true" /> 
     </SelectionModel> 
    </ext:GridPanel> 
</body> 

</asp:Content> 

我遇到的问题是我无法将子系统类绑定到控制器中,它只在我将其创建为对象时才起作用。 这不是为我工作:

public Subsystem[] GetSubsystems() 
{ 
    return new Subsystem[] 
       { 
        new Subsystem() {Id=1, Name = "A", KB="KB112066", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
        new Subsystem() {Id=2, Name = "B", KB="KB143226", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=false}, 
        new Subsystem() {Id=3, Name = "C", KB="KB115326", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
        new Subsystem() {Id=4, Name = "D", KB="KB121425", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
       }; 
} 

它工作正常只有当我这样创造的:

public object[] GetSubsystems() 
{ 
    return new object[] 
       { 
        new object[] {Id=1, Name = "A", KB="KB112066", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
        new object[] {Id=2, Name = "B", KB="KB143226", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=false}, 
        new object[] {Id=3, Name = "C", KB="KB115326", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
        new object[] {Id=4, Name = "D", KB="KB121425", StartTime=DateTime.Now, EndTime=DateTime.Now.AddDays(1), BuildTime=DateTime.Now, Result=true}, 
       }; 
} 

我不想创建我所有的班为对象,我想创建子系统,员工,人员等各种类别,并且能够将它们绑定到控制器中 可以这样做吗?

+1

如何改变你的ArrayReader到JsonReader? – 2012-02-01 22:34:44

+0

您是否尝试过下面的解决方案? – Baidaly 2012-02-03 08:17:44

回答

2

您必须使用JsonReader并在正确的情况下写入字段名称。

Screenshot

试试这个代码为您的GridPanel:

<ext:GridPanel 
     ID="GridPanel1" 
     runat="server" 
     StripeRows="true" 
     Title="Array Grid" 
     TrackMouseOver="true" 
     Width="600" 
     Height="350" 
     AutoExpandColumn="Name"> 
     <Store> 
      <ext:Store ID="Store1" runat="server"> 
       <Reader> 
        <ext:JsonReader > 
         <Fields> 
          <ext:RecordField Name="Id" /> 
          <ext:RecordField Name="Name" /> 
          <ext:RecordField Name="KB" /> 
          <ext:RecordField Name="StartTime" Type="Date" /> 
          <ext:RecordField Name="EndTime" Type="Date" /> 
          <ext:RecordField Name="BuildTime" /> 
          <ext:RecordField Name="Status" Type="Boolean" /> 
         </Fields> 
        </ext:JsonReader> 
       </Reader> 
      </ext:Store> 
     </Store> 
     <ColumnModel ID="ColumnModel1" runat="server"> 
      <Columns> 
       <ext:Column ColumnID="Id" Header="Id" DataIndex="Id" /> 
       <ext:Column ColumnID="Name" Header="Name" DataIndex="Name" /> 
       <ext:Column ColumnID="KB" Header="KB" DataIndex="KB" /> 
       <ext:DateColumn ColumnID="StartTime" Header="StartTime" DataIndex="StartTime" Format="HH:mm:ss" /> 
       <ext:DateColumn ColumnID="EndTime" Header="EndTime" DataIndex="EndTime" /> 
       <ext:DateColumn ColumnID="BuildTime" Header="BuildTime" DataIndex="BuildTime" /> 
       <ext:Column ColumnID="Status" Header="Status" DataIndex="Status" /> 
      </Columns> 
     </ColumnModel> 
     <SelectionModel> 
      <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true" /> 
     </SelectionModel> 
    </ext:GridPanel> 
相关问题