前言
学了这个功能之后,发现牛腩系统就可以当成一个模板来使用了,当需要显示不同的业务时,直接绑定数据库表替换表中的内容就可以实现显示不同的内容,简直太方便了,这样的经验复用让我不得不把它总结下来!
一、绑定需要绑定的数据库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
namespace 牛腩新闻发布系统
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                //第一次进入该页面时
                //绑定新闻分类
                repCategory.DataSource = new CategoryManager().SelectAll();
                repCategory.DataBind();
                NewsManager nm = new NewsManager();
                //绑定最新新闻
                gvNewNews.DataSource = nm.SelectNewNews();
                gvNewNews.DataBind();
                //绑定热点新闻
                gvHotNews.DataSource = nm.SelectHotNews();
                gvHotNews.DataBind();
            }
        }
   }
}1、绑定前的界面显示:

2、绑定后的界面显示:

二、设置自定义模板
1、首先将自动生成列禁用,即 AutoGenerateColumns="False"
2、通过设计视图可视化界面来绑定数据表的列 选择编辑列

3、首先去掉自动生动字段,再添加绑定列,设置 绑定列 相应的Headertext和dataField属性,最后转换为右下角的TemplateField样式才能自己更方便的定义样式,项目中会自动生成相应的TemplateField有关代码


<h4>最新新闻</h4>           
                <asp:GridView ID="gvNewNews" runat="server" AutoGenerateColumns="False" BorderWidth="0">
                    <Columns>
                        <asp:TemplateField HeaderText="所属类别" HeaderStyle-CssClass="th_category">                          
                            <ItemTemplate>
                                 <a class="td_category" href='list.aspx?caid=<%#Eval("caId") %>'>[<%# Eval("name") %>]</a>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="新闻标题">                            
                            <ItemTemplate>                               
                                <a href='newscontent.aspx?newsid=<%# Eval("id") %>' target="_blank" title='<%# Eval("title") %>'><%# StringTruncat( Eval("title").ToString(), 10,"..." )%></a> 
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="发布时间" HeaderStyle-CssClass="th_time" ItemStyle-CssClass="td_time">                            
                            <ItemTemplate>
                                <asp:Label ID="Label3" runat="server" Text='<%# Bind("createtime") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>经验点:
1、一定要准备自己的代码仓库,平时养成写demo的习惯,虽然说这些demo可能思路比较简单,但是以前写好的也没必要一直重复去写,用的时候直接就可以拿过来复制
2、存储过程有利有弊:
利:当需要修改数据库语句时,可以直接在存储过程中修改数据库语句,而不需要去D层修改,如果在D层修改,修改之后还需要重新生成,很麻烦。
弊:用存储过程写数据库语句,用到的表和字段都是写死的,当需要换表时,存储过程就不能实现了。
(PS:修改存储过程时,保存之后切记要再点击 执行,要不然不会保存成功!)
3、Eval产生的数据类型为object类型,需要其他类型需要转换类型
例:Eval("title").ToString()










