2014-04-17 88 views
0

我们如何使用强类型的模型绑定与GridViewBoundFieldBoundFieldDataField属性似乎只取一个字符串值,不像FormView,我可以使用适当的模型绑定语法,如Prop="<%# MyFieldName %>"TemplateField是我唯一的选择吗?GridView和Model Binding

回答

1

对于任何未来的读者,TemplateField是你唯一的选择,如果你想利用强类型的绑定和智能等

0

我不确定你想要什么,但我仍然创建了一个这样的小应用程序。

这里是aspx页面中的gridview。

<asp:GridView runat="server" ID="grdEmployee" AutoGenerateColumns="False" ModelType="WebApplication1.Employee"> 
     <Columns> 
      <asp:BoundField DataField="Age" HeaderText="Age"/> 
      <asp:BoundField DataField="Name" HeaderText="Name"/> 
     </Columns> 
    </asp:GridView> 

现在我创建了如下所示的Employee类。

public class Employee 
{ 
    public string Name { get; set; } 
    public int Age { get; set; } 
} 

和在asp.net的page_load事件我写这个。

protected void Page_Load(object sender, EventArgs e) 
    { 
     List<Employee> employees=new List<Employee>(); 
     Employee employee=new Employee{Age = 33,Name = "Jalpesh Vadgama"}; 
     employees.Add(employee); 

     employee = new Employee { Age = 30, Name = "Vishal Vadgama" }; 
     employees.Add(employee); 

     grdEmployee.DataSource = employees; 
     grdEmployee.DataBind(); 
    } 

它的工作原理。对于双向绑定,您需要使用bindItem的模板控件。

参考 - http://www.sitepoint.com/asp-net-4-5-strongly-typed-data-controls-model-binding/

+0

您提供不模型绑定的代码。这是纯粹的做事方式。然而,您发现的链接是正确的模型绑定;不知道你是否有机会通过它。但确切的问题是,代码中的'DataField'属性需要像'Age'和'Name'这样的字符串值,它没有类似于intellisense等强类型模型绑定的好处。但是TemplateField支持模型绑定如文章中所示。我试图用'BoundField'做同样的事情。 – dotNET

+0

你不能绑定boundfield –