2011-09-28 22 views
1

ASP.NET 3.5 & SQL 2008 我有這個主表&一個子表。對於每組計算,將1條記錄添加到主表&幾條記錄到小計。用什麼控件來顯示主表和子表

大多數用戶輸入的數據進入子表&一些進入主表。 目前,我有一個網頁設置了幾個文本框,從得到的計算顯示在GridView用戶&獲取數據。

GridView控件顯示所有從主表中的記錄。 用戶從GridView的記錄每一次,我想調用另一個頁面,用戶可以更改數據所選記錄。

這將是很好,如果我可以顯示來自主標籤&所有相關記錄形式的子表的1條記錄。我不想使用自由浮動文本框。

什麼控制將是最容易使用這樣的應用?

+0

您是否嘗試過使用數據中繼器和JavaScript的組合? –

+0

爲什麼要使用Javascript。我能不能在文件後面使用ASP代碼? – user450143

+0

是的,你可以! :) –

回答

0

您可以在兩頁它自我使用網格視圖...

在這裏,你必須使用會話變量存儲在第一頁的GridView行的值,則檢索會話值,並顯示在GridView控件的行在第二頁。

如果使用GridView控件來顯示從數據庫中獲取的第一頁中的數據,據我所知,你也可以只通過記錄(如ID)的獨特價值的其他頁面,然後使用唯一值作爲搜索數據庫中記錄的條件,並通過在第二頁中使用gridview控件顯示記錄。

樣品:

1.Code在第一頁(的.aspx):

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
    <title></title> 
    </head> 
    <body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:GridView ID="GridView1" runat="server" 
      onrowdatabound="GridView1_RowDataBound"> 
     <Columns> 
     <asp:TemplateField> 
     <HeaderTemplate>PassValue</HeaderTemplate> 
     <ItemTemplate> 
     <a href='OtherPage.aspx?id=<%# Container.DataItemIndex %>' target="_blank">Pass</a> 
     </ItemTemplate> 
     </asp:TemplateField> 
     </Columns> 
     </asp:GridView> 
    </div> 
    </form> 
</body> 
</html> 

2.Code在第一頁(的.cs):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Bind(); 
    } 
} 
public void Bind() 
{ 
    this.GridView1.DataSource = Get_source(); 
    this.GridView1.DataBind(); 
} 
// You can get the datatbale form your own database. 
// I get the datasource like this in order to run the sample convenient. 
public DataTable Get_source() 
{ 
    DataTable dt = new DataTable(); 
    DataRow dr; 
    string XM = "true,false,false,true"; 
    string XMM = "1,2,3,4"; 
    string[] list1 = XM.Split(','); 
    string[] list2 = XMM.Split(','); 
    dt.Columns.Add(new DataColumn("ActiveStatus")); 
    dt.Columns.Add(new DataColumn("number")); 
    for (int i = 0; i < list1.Length; i++) 
    { 
     dr = dt.NewRow(); 
     dr["ActiveStatus"] = list1[i]; 
     dr["number"] = list2[i]; 
     dt.Rows.Add(dr); 
    } 
    return dt; 
} 
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    int i = e.Row.RowIndex; 
    Session["row"+i] = e.Row; 
} 

3。代碼中的第二頁(其命名爲OtherPage.aspx)

OtherPage.aspx:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:GridView ID="GridView1" runat="server"> 
     </asp:GridView> 
    </div> 
    </form> 
</body> 
</html> 

4.Code在第二頁中(的.cs):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Request.QueryString["id"] != null) 
    { 
     string i = Request.QueryString["id"].ToString(); 
     if (Session["row"+i] != null) 
     { 
      DataTable dt = new DataTable(); 
      DataRow dr = dt.NewRow(); 
      GridViewRow row = (GridViewRow)Session["row" + i]; 
      for (int xm = 0; xm < row.Cells.Count; xm++) 
      { 
       dt.Columns.Add(new DataColumn()); 
       dr[xm] = row.Cells[xm].Text; 
      } 
      dt.Rows.Add(dr); 
      this.GridView1.DataSource = dt; 
      this.GridView1.DataBind(); 
     } 
    } 
} 
如果要修改第二頁中的數據

,您可以修改......我希望它會幫助你.. 。

+0

好主意。我會試一試。我必須弄清楚如何在第二頁中使用gridview。因爲,數據是子表不能以網格格式顯示的。它具有類似的結構Fld1,Fld2,Fld3。 Fld1是描述符Fld2是主要值,Fld3是一個mutiplier。 – user450143

相關問題