我想从ASP.NET中的Gridview
解析一行数据到显示上一页行数据内容的第二页。我的Gridview
已经链接到数据库。
我目前的Gridview
看起来像这样:
当我点击发送详细信息超链接时,我想实现这一点:
如果我单击第二行,该行的数据将显示在下一页中
以下代码是我在链接按钮itemTemplate下面的代码:
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("name") %>'></asp:Label>
<asp:LinkButton ID="viewTours" runat="server" CommandName="view" CommandArgument='<%# Bind("name") %>' PostBackUrl='<%#"~/details.aspx?RowIndex=" + Container.DataItemIndex %>'>View</asp:LinkButton>
</ItemTemplate>
这是我要从第二页加载数据的页面加载方法。
protected void Page_Load(object sender, EventArgs e)
{
if (this.Page.PreviousPage != null)
{
int rowIndex = int.Parse(Request.QueryString["RowIndex"]);
GridView GridView = (GridView)this.Page.PreviousPage.FindControl("GridView");
GridViewRow row = GridView.Rows[rowIndex];
name.Text = (row.FindControl("name") as Label).Text;
//name.Text = row.Cells[0].Text; (this did not work either, i got the same error)
}
}
然而,我在name.Text上得到了一条波浪线,说它不存在,即使我在html(第二)页面的设计视图中有一个带有id名称的标签。
我怎样才能使我能够将选定的Gridview行中的数据解析到另一个页面?假设我可以自定义第二页并将标签放在我喜欢的任何地方。
这是我的gridview的代码。由于我的绑定是通过UI完成的,因此我没有太多的代码,除了将选定的gridview行重定向到另一个页面。
protected void GridView_SelectedIndexChanged(object sender, EventArgs e)
{
Session["tour"] = GridView;
Response.Redirect("tourDetails.aspx");
}
我仍然得到标签文本不存在的错误,当它实际存在于页面本身时。
带有id = name的标签图片:
您将绑定数据与结构混淆。当你试图用name
键获得一个控件时,你真的是指Label1
,所以改变
name.Text = (row.FindControl("name") as Label).Text;
至
name.Text = (row.FindControl("Label1") as Label).Text;