zoukankan      html  css  js  c++  java
  • 十天学会ASP.Net——(7)

    7.数据库查询——新闻管理系统的用户界面

    首先是一个简单的现实界面,要求传递CateID作为URL中Get的参数,用来显示Cate表一条内容:

    string id = Request.QueryString["ID"];
    string conString2 = "Data Source= 192.168.43.1;Initial Catalog= dotnet;User ID= dotnet;Password=dotnet";
    SqlConnection myConnection = new SqlConnection(conString2);
    string cmdText = "select * from [VNews] where ID='" + id +"'";
    SqlCommand myCommand = new SqlCommand(cmdText, myConnection);
    myConnection.Open();
    SqlDataReader dr = myCommand.ExecuteReader();
    if (dr.Read())
    {
        lblTitle.Text = dr["Title"].ToString();
        lblContent.Text = dr["Contents"].ToString();
    }
    myConnection.Close();

    以上是刚刚提到过的SqlDataReader读取数据那么用GridView对象显示数据呢?

    GridView1.DataSource = dr;

    GridView1.DataBind();

    这里就直接把获得的SqlDataReader作为了GridView对象的数据源,然后让GridView自己绑定数据源就搞定了。

    实际上,System.Data中提供的可以作为数据源的对象很多。比如DataSet对象DataTable对象,DataAdapter对象作为DataSet对象的中间件,跟数据库打交道的DataSource对象。

    总结一下:

    DataSet就是数据库可以有多张表

    DataTable数据库的表

    DataReader游标,可以反复读数据(单向操作)

    DataAdapter适配器(双向操作)

    例1:

    SqlDataAdapter da = new SqlDataAdapter(cmdText, myConnection);
    DataSet ds = new DataSet();
    da.Fill(ds);
    GridView1.DataSource = ds.Tables[0].DefaultView;
    GridView1.DataBind();

    例2:

    SqlDataReader dr = myCommand.ExecuteReader();
    ds.Load(dr, LoadOption.Upsert, "cate");
    GridView1.DataSource = ds;
    GridView1.DataBind();

    使用Repeater自己定制格式加载数据

    <asp:Repeater ID="Repeater1" runat="server">

    <ItemTemplate>

    <li><span class="time"><%#Eval("PostDate") %></span>

    <a href='show_news.aspx?id=<%#Eval("ID") %>' target="_blank">

    <%#Eval("title") %>

    </a></li>

    </ItemTemplate>

    </asp:Repeater>

    这样,后台只要Bind一条记录前台就可以以自定义的格式显示该条记录,或者在页面上多设一些Repeator,或者运用动态添加的技术,然后可以充分发挥Repeater的定制性能,数据有多少就会出现多少行了。

    现在再让我们来看看学校的新闻网:

    clip_image002

    我们现在来关心中间的豆腐块是怎么实现的:

    其实就是刚刚用的Repeater对象,

    新建一个Web用户自定义控件:

    clip_image004 clip_image006

    然后看看新闻网的实现呀:

    是一个无序列表<ul>,中间的其中一块豆腐就是一个<li>再看下他放在哪里,这个是制作豆腐块的关键:

    <div id="middlewrap-right">

    <div id="bmcz_zonghexinwen">

    <h1 class="title_zonghexinwen"><span class="more"><a href="/articles/75/">更多>></a></span></h1>

    <ul>

    <li class="first">

    <span class="time">05-22</span>

    <a href="/articles/75/18910/" target="_blank" title="文章标题:2012年“吾爱吾”心理健康宣传周开幕式暨专题培训讲座如期举行

    作 者:谭娟晖

    点 击 率:58" class="title-color0">

    [<font color="blue">图</font>]2012年“吾爱吾”心理健康宣传周开幕式暨

    </a></li>

    一下还有几条内容,我们可以看到,这里并没有看到综合新闻的这几个字,它是一张Css控制的图片,其实让页面排布成这样方块形的也是CSS,所以我们要导入页面的Css文件:

    clip_image008

    clip_image010

    顾构造WebUserControl.ascx页面代码如下

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    <div id="middlewrap">
    <div id="xueyuankuaixun"><h1 class="title_xueyuankuaixun"><span class="more"><a href="/articles/53/">更多>></a></span></h1>
    <div id="bmcz_zonghexinwen">
    <h1 class="title_zonghexinwen">
    <span class="more"><a href="http://news.zafu.edu.cn/articles/75/">更多>></a></span>
    </h1>
                <asp:Label ID="lblTitle" runat="server" Text=""></asp:Label>
                <ul>
                    <asp:Repeater ID="Repeater1" runat="server">
                        <ItemTemplate>
                            <li><span class="time">
                                <%#Eval("PostDate") %></span> <a href="show_news.aspx?id=<%#Eval("ID") %>" target="_blank"
                                    class="title-color0">
                                    <%#Eval("Title") %></a></li>
                        </ItemTemplate>
                    </asp:Repeater>
                </ul>
            </div>
        </div>

    后台代码:

    //字段
    private string cateID;
    //属性
    public string CateID
    {
        get { return cateID; }
        set { cateID = value; }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        string id = cateID;
        if (string.IsNullOrEmpty(id))
        {
            Response.Write("id是空");
            return;
        }
        string conString2 = "Data Source= localhost;Initial Catalog= dotnet;User ID= sa;Password=000000";
        SqlConnection myConnection = new SqlConnection(conString2);
        string cmdText = "select * from [News] where CateID='" + id + "'";
        SqlCommand myCommand = new SqlCommand(cmdText, myConnection);
        myConnection.Open();
    
        SqlDataReader dr = myCommand.ExecuteReader();
        Repeater1.DataSource = dr;
        Repeater1.DataBind();
        myConnection.Close();
        //Label1.Text = "类别[" + TextBox1.Text + "]添加成功";
    }

    然后建立豆腐块.aspx

    <%@ Page Title="" Language="C#" MasterPageFile="MasterPage.master" AutoEventWireup="true" CodeFile="豆腐块.aspx.cs" Inherits="豆腐块" %>
    <%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
    <link href="http://news.zafu.edu.cn/static/front/default/css/base2.css" rel="stylesheet" type="text/css" media="screen" />
    		<script type="text/javascript" src="http://news.zafu.edu.cn/static/admin/js/jquery.min.js"></script>
            
        <link href="http://news.zafu.edu.cn/static/front/default/css/home2.css" rel="stylesheet" type="text/css" media="screen" />
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <uc1:WebUserControl ID="uc1" runat="server" CateID="1" />
    <uc1:WebUserControl ID="WebUserControl1" runat="server" CateID="2"/>
    <uc1:WebUserControl ID="WebUserControl2" runat="server" CateID="3"/>
    </asp:Content>

    注意代码行中的CateID="2"就代表传给WebUserControl.ascx一个实例的CateID属性赋值为"2",这样,在调用代码的时候就会执行"select * from [News] where CateID='" + id + "'",将查询出数据库中目录号为2的所有记录都放在这个用户自定义控件当中。

    我实现的效果:(数据库也贴出来大家看下)

    clip_image012

    clip_image014

  • 相关阅读:
    echarts柱状图实现多条不同颜色渐变
    vue echarts 点击左侧菜单,宽度无法自适应,且支持 窗口大小改变echarts图自适应
    element 单列查询
    js实现双向数据绑定,vue v-model原理
    css3 nth-child使用
    基于工程实践选题的对同类软件产品的调研分析
    深度优先搜索
    迷宫
    元组和字典
    列表
  • 原文地址:https://www.cnblogs.com/shenerguang/p/2514627.html
Copyright © 2011-2022 走看看