2012-08-13 88 views
5

有關表格(本例中爲單列)的簡單問題。 儘管它看起來像一個簡單的問題,但我從未參與過前端領域,所以在這裏。在ASP.NET頁面上填充表格

佈局是2列和8行。 有點像。

Name  A 
LastName B 
Age   C 
BirthDate D 
... 

第1列是穩定的,如果你願意,「標題」不會​​改變。

A,B,C,D是查詢數據庫的結果。所以,我能想到的選項是:

  1. 繪製2Column - 在一個8Row表格和文本框的地方,B,C,d ...領域。所以稍後他們可以填充查詢結果(這個選項不是最「美麗」的一個,因爲TextBoxes改變了整個頁面使用.CSS文件吸收的設計

  2. 設置一個數據網格在這裏我想的問題是,一些A的,B,C,d字段將不得不改變供以後查詢使用。而且我不知道,如果是的DataGrid包換了點。

有沒有一種「好方法」可以解決這個問題? 在此先感謝。

編輯。

A,B,C,D數據保存在DataSet中。

+1

Visual Studio是一個與許多語言一起使用的IDE--您在談論哪一個?一張桌子在什麼?你打算如何查詢它? – Oded 2012-08-13 13:55:30

+0

@Oded是一個C#/ aspx項目。 DB是SQL。來自SQL的數據將放置在A,B,C,D ...中的數據集中。 – 2012-08-13 13:58:14

+0

aspx ... WebForms或MVC? – Oded 2012-08-13 13:58:41

回答

7

對我來說,你所描述的數據並沒有真正借給自己的方式太多了。一個DataGrid。此控件最適合您計劃以標準表格樣式顯示的數據,其中列名在頂部顯示,然後顯示下面的值行。對於我來說,如果您打算將對象的一個​​或多個實例(我現在將其稱爲Person)綁定到UI,那麼對我而言也有點不清楚。

讓我們繼續前進,並定義對象:

public class Person { 
    public String Name { get; set; } 
    public String LastName { get; set; } 
    public int Age { get; set; } 
    public DateTime BirthDate { get; set; } 
} 

Person單一實例綁定到你的用戶界面,一個簡單的HTML表格應該正常工作。我正在使用TextBoxes在此處顯示值,但如果您不需要編輯它們,則只需使用Label即可。

<table> 
    <tr><td>Name:</td><td><asp:TextBox ID="txtName" runat="server" /></td></tr> 
    <tr><td>Last Name:</td><td><asp:TextBox ID="txtLastName" runat="server" /></td></tr> 
    <tr><td>Age:</td><td><asp:TextBox ID="txtAge" runat="server" /></td></tr> 
    <tr><td>Birthdate:</td><td><asp:TextBox ID="txtBirthDate" runat="server" /></td></tr>     
</table> 

這是在這一點上很瑣碎從Person屬性綁定到它們各自的對照使用代碼隱藏在頁面上。

如果您想要使用相同的佈局在頁面上顯示Person的多個實例,請使用ASP.net Repeater。這樣做的標記看起來更象:

<asp:Repeater ID="repPeople" runat="server"> 
    <ItemTemplate> 
     <table> 
      <tr><td>Name:</td><td><asp:TextBox ID="txtName" runat="server" Text='<%# Eval("Name") %>' /></td></tr> 
      <tr><td>Last Name:</td><td><asp:TextBox ID="txtLastName" runat="server" Text='<%# Eval("LastName") %>' /></td></tr> 
      <tr><td>Age:</td><td><asp:TextBox ID="txtAge" runat="server" Text='<%# Eval("Age") %>' /></td></tr> 
      <tr><td>Birthdate:</td><td><asp:TextBox ID="txtBirthDate" runat="server" Text='<%# String.Format("{0:d}", Eval("BirthDate")) %>' /></td></tr>     
     </table>     
    </ItemTemplate> 
</asp:Repeater> 

在代碼隱藏,你剛纔的Person集合綁定到DataSource財產上Repeater

protected void Page_Load(object sender, EventArgs e) { 

    // A simple example using Page_Load 
    List<Person> people = new List<Person>(); 
    for (int i = 0; i < 10; i++) { 
     people.Add(new Person() {Name = "Test", Age = 10, BirthDate=DateTime.Now, LastName = "Test"}); 
    } 

    if (!IsPostBack) { 
     repPeople.DataSource = people; 
     repPeople.DataBind(); 
    } 

} 

注:你可以使用CSS而不是表格來實現類似的佈局,但是在綁定單個或多個對象之間應用相同的原則。只需將本例中的表格佈局替換爲最終定義的任何標記即可。

+0

謝謝邁克!它將只是一個人,是的,它是你所假設的一個對象。認爲我可以使用不會更改的單元格的標籤,以及用戶可以在頁面上工作時修改的單元格的TextBoxes。 – 2012-08-13 15:19:04