用什么控制来显示主要和&子表

时间:2011-09-28 07:50:23

标签: asp.net

ASP.NET 3.5& SQL 2008 我有这个主表&子表格。对于每组计算,1个记录被添加到主表&几个记录到小计。

大多数用户输入的数据都会进入子表格&一些进入主表。 目前我有一个网页设置有几个文本框,以从用户和&结果计算显示在网格视图中。

gridview显示Main表中的所有记录。 每次用户从gridview中选择一条记录时,我想调用另一个页面,用户可以在其中更改所选记录的数据。

如果我可以显示主菜单中的1条记录,那就太好了。所有相关记录构成子表。我不想使用自由浮动文本框。

哪种控件最容易用于此类应用程序?

1 个答案:

答案 0 :(得分:0)

你可以在两个页面中使用网格视图...

在这里,您必须使用会话变量在第一页中存储gridview行的值,然后检索会话值并在第二页的gridview控件中显示该行。

如果你使用gridview控件来显示从第一页的数据库中获取的数据,据我所知你也可以将记录的唯一值(例如id)传递给另一个页面,然后使用唯一的value作为搜索数据库中记录的条件,并在第二页中使用gridview控件显示记录。

样品:

1.在第一页(.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.Code在第二页(名为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();
        }
    }
}

如果你想修改第二页中的数据,你可以修改......我希望它能帮到你......