ASP.NET 3.5& SQL 2008 我有这个主表&子表格。对于每组计算,1个记录被添加到主表&几个记录到小计。
大多数用户输入的数据都会进入子表格&一些进入主表。 目前我有一个网页设置有几个文本框,以从用户和&结果计算显示在网格视图中。
gridview显示Main表中的所有记录。 每次用户从gridview中选择一条记录时,我想调用另一个页面,用户可以在其中更改所选记录的数据。
如果我可以显示主菜单中的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();
}
}
}
如果你想修改第二页中的数据,你可以修改......我希望它能帮到你......