2014-04-17 127 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 –