最近一直在摆弄一些现成的控件,这是为了加快开发网站的速度和尽快了解网站的原理,否则我是很不喜欢用现成的控件的,因为我喜欢从底层开始^_^。
今天讲下使用参数的数据源控件,就从论坛程序的片面简单原理为切入点开始这个话题吧。
如果你是一个程序初学者,你在使用论坛的时候可能会和我有一样的疑惑,点击论坛不同帖子标题的连接为什么就会弹出内容不一样的网页?如果你具备一些静态网页的知识,最直接的理解是可能是:每一个连接都定位到一个固有的页面,也就是说,如果现在页面上有100条标题,就有另外100个页面在存放它们相应的内容。但是再愚蠢的人也会立刻反应过来:不可能,如果是一个日发帖量几十万的大型论坛,那么即使有100个人专门维护也会被活活累死,况且,这么做浪费了大量的空间资源。
到底是怎么回事?如果你细心的话就会发现你点击不同链接的时候URL的?前面部分是一样的,只有问号后面的一些值不同。其实线索就在这里,如果你有点小聪明就可以作出这样的推断:是那些值在控制什么时候页面显示哪些内容,而且只有一个页面在显示这些内容!
其实那些值是一些参数,可以用于控件执行任务。
举个例子,我可以用GridView控件配合DetailsView控件,当点击Gridview上的记录的时候,DetailsView控件会显示这个记录的详细信息,这时候就要用到参数,这个参数其实是用在连接字符串里的,作为WHERE语句的一个参照值,如下:
SelectCommand = " SELECT [FixtureID], [Notes] FROM [Fixtures] WHERE ([FixtureID] = @FixtureID) " >
< SelectParameters >
< asp:ControlParameter ControlID = " GridView1 " DefaultValue = " 1 " Name = " FixtureID " PropertyName = " SelectedValue "
Type = " Int32 " />
</ SelectParameters >
</ asp:SqlDataSource >
在<SelectParameters>标记里定义的就是一参数。再看上面的连接字符串的WHERE语句,参数成为了参照。
每次点击标题的时候服务器会接收这些参数,然后查询语句根据它来判定生成哪些数据绑定到数据绑定控件上。