我目前正在开发asp.net的新闻门户网站。我在sql server 2008中创建了一个带参数的表(NewsId,NewsTitle,NewsDetails,NewsCategory)。我现在能够从数据库中动态检索NewsTitle并将其显示在我的aspx页面中。 现在我想为特定的NewsTitle传递NewsId,然后在单独的aspx页面中检索NewsDetails。在ASP.NET中执行此操作的最佳方法是什么?我不希望每次点击指向NewsTitle的链接时都创建新的aspx页面,而是我有兴趣使用相同的Details页面并传递不同的ID参数?
的问候,
答案 0 :(得分:2)
我会将它们放在同一页面上,并使用类似面板的东西来使用主 - 细节模式来切换可见性:
http://leedumond.com/blog/master-detail-editing-inserting-deleting-with-a-listview-and-detailsview/
这将给你基本的想法;链接的示例显示两者,但正如我所说,单击按钮即可打开和关闭它们。
答案 1 :(得分:1)
您可以采取以下方法:
在Gridview中显示HyperLink以显示NewsTitle:
<asp:GridView ID="GridView1" runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:HyperLink runat="server" ID="hl" NavigateUrl='<%#"NewsDetails.aspx?Newsid="+ Eval("NewsId") %>' Text='<%# Eval("NewsTitle") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
将GridView数据源绑定在代码后面:
protected void getNewsDetails()
{
DataTable dtNewsDetails = new DataTable();
//retrieve data from database into the DataTable
GridView1.DataSource = dtNewsDetails;
GridView1.DataBind();
}
现在,GridView HyperLink将以NewsId作为查询字符串导航到NewsDetails.aspx,在NewsDetails.aspx页面中相应地显示详细信息:
protected void Page_Load(object sender,EventArgs e) { string Newsid = Request.QueryString [“Newsid”]。ToString(); //使用Newsid显示数据库中的详细信息 }
答案 2 :(得分:0)
您可以添加一个textBox,其visible属性设置为False,当您检索NewsDetails时,将其设置为textBox并将其可见性设置为True;
<asp:TextBox ID="NewsDetails" runat="server" TextMode="MultiLine"
Height="30px" Width="200px" Visible="False" />
和
void GetNewsDetails()
{
NewsDetails.Text=GetDetailsQuery;
NewsDetails.Visible=True;
}