中午公司休息,快马加鞭,赶制第一块.Net学习笔记蛋糕。
第一次写这种东西,所以描述语言不够专业,我用一些图例来解释。
问题的目标:创建一个Gridview,使其中一列动态链接到相同分类的条目:
比如一个如图所示的Gridview,显示在bom_package.aspx中
点击Type链接之后出现和相应TypeID同类的条目,如下图,显示在bom_detail.aspx中
前台代码bom_package.aspx实现:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="datasrcpackage">
<Columns>
<asp:BoundField DataField="TypeID" HeaderText="TypeID" ReadOnly="True" SortExpression="TypeID" />
<asp:TemplateField HeaderText="Type">
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("TypeID", "~/cadd/bom_detail.aspx?typeid={0}") %>'
Text='<%# Eval("Type") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<!--说明:NavigateUrl='<%# Eval("TypeID", "~/cadd/bom_detail.aspx?typeid={0}") %>'设置每个链接指向的url,首先设置TypeID映射到一个变量,然后设置url的format,其中{0}代表不同的TypeID,它会由Gridview自动读取,这个就不用我们管啦:).....aspx?typeid={0}是将typeid作为参数传到另一个网页去。-->
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
<asp:BoundField DataField="Created" HeaderText="Created" SortExpression="Created" />
<asp:BoundField DataField="Updated" HeaderText="Updated" SortExpression="Updated" />
</Columns>
</asp:GridView>
<!--接下来就是下一个网页(接收参数的网页)的设置-->
//bom_detail.aspx.cs,在bom_detail.aspx中添加gridview的步骤省略咯
using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
//这是我引用的乱七八糟的东西,有些不一定必须。但是一般不要忘记System.Data和System.Data.SqlClient
public partial class bom_detail : System.Web.UI.Page
{
protected void Page_load(object sender, EventArgs e)
{
//定义一个string型的变量用来接受参数,这里一定要是string型,因为sql语句的关系。
//刚开始做的时候我把网页的form属性加了method="get",自以为这样才能传参数,
//结果发现Gridview的page功能受到了影响,而且参数也传不进来
//后来经高人指点才发现加method是asp的思想,asp.net里是不需要这么传的
//直接Request一样可以得到。所以我不得不感叹.Net之牛,Microsoft之牛!
string typeId;
typeId = (string)Request["typeid"];
// dataPCWL1是bom_Detail网页中gridview的sqldatasourceid,
//在前台bom_detail.aspx中不要设置它的SelectCommand
dataPCWL1.SelectCommand = "SELECT * FROM BOMGeneral WHERE (TypeID = " + typeId + ")";
}
}
这样就可以啦!
写完之后发现语言描述太不Professional了,有什么问题大家留言哦。只要我懂我会解答滴,呵呵。。