zoukankan      html  css  js  c++  java
  • 14.示例解析

    做一个相对完整的示例,用来显示公司的招聘、新闻、产品介绍等功能。

    1.先在工程中建立完整的文件夹,(Admin为后台管理用文件夹,App_Data是数据库文件夹、BLL为业务逻辑文件夹、css为样式文件夹、DAL为数据操作类文件夹,放置强类型数据集、ErrorPages为错误页文件夹、imgs为图片文件夹、js为调用js,jQuery,CKEditor等的文件夹、Library为要用到的库文件夹、master为母版文件夹、upload为上传文件的文件夹、UserControl为用户自定义控件的文件夹),如下截图:

    2.建立数据表,T_News(新闻). T_Products(产品表), T_ProductsCategory(产品类别表)

    3.建立强类型集,新闻中有以下几个方法(分页和显示用):

      

    4.先建立普通的HTML框架页面,即用div等元素先划分出导航、头部、中间等的框架,用css来控件显示的位置,然后再建立母版页,并把框架页面中的主要部分放到母版页form中即可,以下为母版页的html

    <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="SetFront.master.cs" Inherits="企业网站.master.SetFront" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <link href="../css/default.css" rel="stylesheet" type="text/css" />
        <script src="../js/jquery-1.10.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                $("#navigate li").mouseenter(function () {
                    $(this).addClass("active").siblings().removeClass("active");
                });
            });
        </script>
        <asp:ContentPlaceHolder ID="head" runat="server">
        </asp:ContentPlaceHolder>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="main">
            <div id="header">
                <img src="../imgs/default.gif" />
                <ul id="navigate">
                    <li><a href="default.aspx">首    页</a></li>
                    <li>公司概况</li>
                    <li>公司新闻</li>
                    <li><a href="ViewProducts.aspx">产品展示</a></li>
                    <li>招贤纳士</li>
                    <li>关于我们</li>
                </ul>
            </div>
            <br class="clear" />
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            
            </asp:ContentPlaceHolder>
             <br class="clear" />
            <div id="footer">
              <hr />
              <center>企业网站展播,如有累同请来电。</center>
            </div>
        </div>
        </form>
    </body>
    </html>

    5.css文件内容

    body {
    }
    
    .clear
    {
        clear:both;
    }
    #main
    {
        950px;
        margin-left:auto;
        margin-right:auto;
    }
    
    #navigate
    {
        list-style-type:none;
    }
    
    #navigate li
    {
        float:left;
        margin:3px,3px,3px,3px;
    }
    
    #navigate .active
    {
        background-color:Red;
    }
    
    .validator
    {
       color:Red;
    
    }
    
    .more
    {
        float:right;
    }
    
    .ulwidth
    {
        200px;
    }
    
    .ckeditor
    {
    }
    
    .ProductFloat
    {
        float:left;
    }

    6.建立首页(带有母版,不是普通的aspx),在显示的地方放上objectdatasource及listview等元素

    <%@ Page Title="" EnableViewState="false" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="企业网站._default" %>
    <%@ OutputCache Duration="10" VaryByParam="none" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <asp:ObjectDataSource ID="odsNews" runat="server" DeleteMethod="Delete" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetTop10Data" 
            TypeName="企业网站.DAL.DataSetNewsTableAdapters.T_NewsTableAdapter" 
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_Id" Type="Int64" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="Body" Type="String" />
                <asp:Parameter Name="CreateDate" Type="DateTime" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="Title" Type="String" />
                <asp:Parameter Name="Body" Type="String" />
                <asp:Parameter Name="CreateDate" Type="DateTime" />
                <asp:Parameter Name="Original_Id" Type="Int64" />
            </UpdateParameters>
        </asp:ObjectDataSource>
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="odsNews">
          <HeaderTemplate><ul class="ulwidth"></HeaderTemplate>
          <ItemTemplate><li><a href='ViewNews.aspx?id=<%#Eval("Id") %>'>><%#Eval("Title") %></a></li></ItemTemplate>
          <FooterTemplate><li><a href="morenews.aspx" class="more">更多</a></li></ul></FooterTemplate>
        </asp:Repeater>
    </asp:Content>

    “更多”的功能是另起一页,把所有的新闻分页显示出来如下图,用到了分页功能,是高效分页的那种。

    html:

    <%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/master/SetFront.Master"  CodeBehind="morenews.aspx.cs" Inherits="企业网站.morenews" %>
    
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <script src="js/jquery-1.10.1.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            $(function () {
                $("#go").click(function () {
                    var i = $("#pgnumber").val();
                    location.href = "morenews.aspx?pg=" + i;
                });
            });
        </script>
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
     <div>
        
            <asp:ObjectDataSource ID="odsnews" runat="server" DeleteMethod="Delete" 
                InsertMethod="Insert" OldValuesParameterFormatString="original_{0}"             
                TypeName="企业网站.DAL.DataSetNewsTableAdapters.T_NewsTableAdapter" 
                UpdateMethod="Update" EnablePaging="True" 
                 SelectCountMethod="GetAllNewsData" 
                SelectMethod="GetNewsPageData"
               >
                <DeleteParameters>
                    <asp:Parameter Name="Original_Id" Type="Int64" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="Title" Type="String" />
                    <asp:Parameter Name="Body" Type="String" />
                    <asp:Parameter Name="CreateDate" Type="DateTime" />
                </InsertParameters>
                
                <UpdateParameters>
                    <asp:Parameter Name="Title" Type="String" />
                    <asp:Parameter Name="Body" Type="String" />
                    <asp:Parameter Name="CreateDate" Type="DateTime" />
                    <asp:Parameter Name="Original_Id" Type="Int64" />
                </UpdateParameters>
            </asp:ObjectDataSource>
            <asp:ListView ID="lvnews" runat="server" DataKeyNames="Id" 
                DataSourceID="odsnews">
               
               
                <EmptyDataTemplate>
                        没有新闻。                 
                </EmptyDataTemplate>
               
                <ItemTemplate>
                  <li><a href='ViewNews.aspx?id=<%#Eval("Id") %>'><%#Eval("Title") %></a></li>
                </ItemTemplate>
                <LayoutTemplate>
                     <ul>
                        <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
                     </ul>
                                
                   <asp:DataPager ID="DataPager1" runat="server" QueryStringField="pg">
                                    <Fields>
                                       <asp:NumericPagerField ButtonType="Link" />
                                       <asp:TemplatePagerField>
                                          <PagerTemplate>
                                            <input type="text" id="pgnumber"> <input type="button" id="go" value="go" >
                                          </PagerTemplate>
                                       </asp:TemplatePagerField>
                                    </Fields>
                                </asp:DataPager>    
                </LayoutTemplate>
               
            </asp:ListView>
        
        </div>
    </asp:Content>

    7.具体查看某个id的新闻,我们可以用Literal元素来显示,因为它在客户端什么也不会渲染出来

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ViewNews.aspx.cs" Inherits="企业网站.ViewNews" %>
    
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
      <p>
        <center>
          <h1>
             <asp:Literal ID="litTitle" runat="server"></asp:Literal>
          </h1>     
        </center>
        
       </p>
      <p style="float:right">
          <asp:Literal ID="litCreateDate" runat="server" ></asp:Literal>
      </p>
      <br class="clear" />
      <p>
         <asp:Literal ID="litBody" runat="server"></asp:Literal>
         
      </p>
    </asp:Content>

    8.分类显示处理

       如果公司产器分类太多,要在页面上显示的时候会产生大量的html代码并且看着很乱,可以建立用户控件页面,在上面放一个Repeater或listView即可,用代码绑定它的数据源即可

       html:

       

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControlProducts.ascx.cs" Inherits="企业网站.UserControl.UserControlProducts" %>
    <asp:Repeater ID="RepeaterPut" runat="server">
    <HeaderTemplate><ol></HeaderTemplate>
    <ItemTemplate>
    <li onmouseout="this.style.background='White'" onmouseover="this.style.background='Blue'"><a href='ViewProductDetail.aspx?id=<%#Eval("Id") %>'><font style="color:Red;font-size:large; "><%#Eval("Name") %></font></a></li>
    </ItemTemplate>
    <FooterTemplate></ol></FooterTemplate>
    </asp:Repeater>

    cs:

     public partial class UserControlProducts : System.Web.UI.UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    var data = new T_ProductsTableAdapter().GetDataByCategoryId(CategoryId);
                    RepeaterPut.DataSource = data;
                    RepeaterPut.DataBind();
                }
            }
    
            public int CategoryId
            {
                get;
                set;
            }
        }

    这样我们可以把这个做好的UserControlProducts.ascx拖动到ViewProducts.aspx,用示展示产品,有几个分类就拖动几个用户控件到此页面上

    Html:

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ViewProducts.aspx.cs" Inherits="企业网站.ViewProducts" %>
    <%@ Register src="UserControl/UserControlProducts.ascx" tagname="UserControlProducts" tagprefix="uc1" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <div class="ProductFloat">
          <p>医疗器械</p>
          <uc1:UserControlProducts ID="UserControlProducts2" runat="server" CategoryId="1" />
        </div>
    
        <div class="ProductFloat">
           <p>电动车</p>
           <uc1:UserControlProducts ID="UserControlProducts3" runat="server" 
                CategoryId="2" />
        </div>
        <div class="ProductFloat">
          <p>火炉</p>
          <uc1:UserControlProducts ID="UserControlProducts1" runat="server" 
                CategoryId="3" />
         </div>
        
    </asp:Content>

     在用户控件页面设定了CategoryId来根据产品分类,因此,可以在产品页面中分别设定用户控件所对应的CategoryId值,如此例中医疗器械为1,电动车为2,火炉为3.这些是数据库都已设置好的。

    9. 显示每个产品页面

      

     html:

      

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ViewProductDetail.aspx.cs" Inherits="企业网站.ViewProductDetail" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <asp:ObjectDataSource ID="odsproducts" runat="server" 
            OldValuesParameterFormatString="original_{0}" SelectMethod="GetDataById" 
            TypeName="企业网站.DAL.DataSetProductTableAdapters.T_ProductsTableAdapter">
            <SelectParameters>
                <asp:QueryStringParameter Name="Id" QueryStringField="Id" Type="Int64" />
            </SelectParameters>
        </asp:ObjectDataSource>
        <asp:ObjectDataSource ID="odsCategory" runat="server" 
            OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" 
            TypeName="企业网站.DAL.DataSetProductTableAdapters.T_ProductsCategoryTableAdapter">
        </asp:ObjectDataSource>
        <asp:FormView ID="FormView1" runat="server" DataKeyNames="Id" 
            DataSourceID="odsproducts">
          
            <ItemTemplate>
               
                <br />
                名称:
                <asp:Label ID="NameLabel" runat="server" Text='<%# Bind("Name") %>' />
                <br />
                类别:
                <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("CategoryId") %>' DataTextField="Name" DataValueField="Id" DataSourceID="odsCategory" Enabled="false">
                </asp:DropDownList>
               
                <br />
                图片:
                <img src='<%#ResolveClientUrl("~/upload/images/"+Eval("PicPath")) %>' runat="Server" />
               
                <br />
                描述:
                <asp:Label ID="DescriptionLabel" runat="server" 
                    Text='<%# Bind("Description") %>' />
                <br />
                <a href="ViewProducts.aspx">返回</a>
            </ItemTemplate>
        </asp:FormView>
    </asp:Content>

    9.管理页面

        1).新闻页分布显示ListNews.aspx

         

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ListNews.aspx.cs" Inherits="企业网站.Admin.ListNews" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            
            <a href="EditNews.aspx?action=addnew">发布新闻<asp:ObjectDataSource ID="odsnews" 
                runat="server" DeleteMethod="Delete" EnablePaging="True" 
                OldValuesParameterFormatString="original_{0}" 
                SelectCountMethod="GetAllNewsData" SelectMethod="GetNewsPageData" 
                TypeName="企业网站.DAL.DataSetNewsTableAdapters.T_NewsTableAdapter" 
                EnableCaching="True">
                <DeleteParameters>
                    <asp:Parameter Name="Original_Id" Type="Int64" />
                </DeleteParameters>
                
            </asp:ObjectDataSource>
            </a>
            &nbsp;<asp:ListView ID="lvNews" runat="server" DataKeyNames="Id" 
                DataSourceID="odsnews">
               
                
                <EmptyDataTemplate>
                    <table runat="server" style="">
                        <tr>
                            <td>
                                未返回数据。</td>
                        </tr>
                    </table>
                </EmptyDataTemplate>
                
                 <ItemTemplate>
                    <tr style="">
                       <td>
                         <asp:Button ID="btnDelete" runat="server" Text="删除" CommandName="Delete" onClientClick='return confirm("你要删除它吗?");' />
                         <a href='EditNews.aspx?action=edit&id=<%#Eval("Id")%>'>编辑</a>
                        <td>
                            <asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' />
                        </td>                    
                       
                        <td>
                            <asp:Label ID="CreateDateLabel" runat="server" 
                                Text='<%# Eval("CreateDate") %>' />
                        </td>
                       
                    </tr>
                </ItemTemplate>
                <LayoutTemplate>
                    <table runat="server">
                        <tr runat="server">
                            <td runat="server">
                                <table ID="itemPlaceholderContainer" runat="server" border="0" style="">
                                    <tr runat="server" style="">
                                       
                                        <th runat="server">
                                            Title</th>
                                        
                                        <th runat="server">
                                            CreateDate</th>
                                    </tr>
                                    <tr runat="server" ID="itemPlaceholder">
                                    </tr>
                                </table>
                            </td>
                        </tr>
                        <tr runat="server">
                            <td runat="server" style="">
                                <asp:DataPager ID="DataPager2" runat="server">
                                    <Fields>
                                        <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
                                            ShowLastPageButton="True" />
                                    </Fields>
                                </asp:DataPager>
                            </td>
                        </tr>
                    </table>
                </LayoutTemplate>            
                
                
                
                
                
                
            </asp:ListView>
        
        </div>
        </form>
    </body>
    </html>

         2).新增修改产品页EditNews.aspx

           

    <%@ Page Language="C#" AutoEventWireup="true" ValidateRequest="false"  CodeBehind="EditNews.aspx.cs" Inherits="企业网站.Admin.editNews" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>   
        <script src="js/ckeditor/ckeditor.js" type="text/javascript"></script>
        <link href="../css/default.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        <table border="0" cellspacing="0" cellpadding="0" width="100%">
            <tr>
                <td>标题</td>
                <td>
                    <asp:TextBox ID="txtTitle" runat="server" Width="484px"></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                        ControlToValidate="txtTitle" CssClass="validator">*</asp:RequiredFieldValidator>
                </td>
            </tr>
    
            <tr>
                <td>内容</td>
                <td>
                  <asp:TextBox ID="txtBody" runat="server" TextMode="MultiLine" CssClass="ckeditor"  
                        ></asp:TextBox>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                        ControlToValidate="txtBody"  CssClass="validator" >*</asp:RequiredFieldValidator>
                </td>
            </tr>
    
            <tr>
                <td>
                    <asp:Button ID="btnSave" runat="server" Text="保存" onclick="btnSave_Click" />
                </td>
                <td></td>
            </tr>
        </table>
        </div>
        </form>
    </body>
    </html>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using 企业网站.DAL.DataSetNewsTableAdapters;
    
    namespace 企业网站.Admin
    {
        public partial class editNews : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    string action = Request["action"];
                    if (action == "edit")
                    {
                        int id = Convert.ToInt32(Request["id"]);
                        var rowdata = new T_NewsTableAdapter().GetDataById(id).Single();
                        txtTitle.Text = rowdata.Title;
                        txtBody.Text = rowdata.Body;
                    }
                    else if (action == "addnew")
                    {
    
                    }
                    else
                    {
                        throw new Exception("action错误:" + action);
                    }
                }
            }
    
            protected void btnSave_Click(object sender, EventArgs e)
            {
                if (!IsValid)
                    return;
                string action = Request["action"];
                if (action == "edit")
                {
                    int id = Convert.ToInt32(Request["id"]);
                    T_NewsTableAdapter adapter = new T_NewsTableAdapter();
                    var rowdata = adapter.GetDataById(id).Single();
                    rowdata.Title = txtTitle.Text;
                    rowdata.Body = txtBody.Text;
                    adapter.Update(rowdata);
                }
                else if (action == "addnew")
                {
                    new T_NewsTableAdapter().Insert(txtTitle.Text, txtBody.Text, DateTime.Now);
                }
                else
                {
                    throw new Exception("action错误:" + action);
                }
    
                Response.Redirect("~/Admin/ListNews.aspx");
            }
        }
    }
    

        3)产品浏览ListProduct.aspx

          

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="ListProduct.aspx.cs" Inherits="企业网站.Admin.ListProduct" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <asp:ObjectDataSource ID="odsProduct" runat="server" DeleteMethod="Delete" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetData" 
            TypeName="企业网站.DAL.DataSetProductTableAdapters.T_ProductsTableAdapter" 
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_Id" Type="Int64" />
            </DeleteParameters>
          
            
        </asp:ObjectDataSource>
        <asp:ObjectDataSource ID="odsCategory" runat="server" DeleteMethod="Delete" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetData" 
            TypeName="企业网站.DAL.DataSetProductTableAdapters.T_ProductsCategoryTableAdapter" 
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_Id" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="Name" Type="String" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="Name" Type="String" />
                <asp:Parameter Name="Original_Id" Type="Int32" />
            </UpdateParameters>
        </asp:ObjectDataSource>
        <a href="EditProduct.aspx?action=addnew">新增产品</a>
        <asp:ListView ID="lvProduct" runat="server" DataKeyNames="Id" 
            DataSourceID="odsProduct" oniteminserted="lvProduct_ItemInserted">
            
                    
            
            <EmptyDataTemplate>
               
                            未返回数据。
               
            </EmptyDataTemplate>
            
            
            
            <ItemTemplate>
                <tr style="">
                    <td>
                        <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="删除" onClientClick="return confirm('你确定要删除此记录吗?');" />
                         <a href='EditProduct.aspx?action=edit&id=<%# Eval("Id")%>'>编辑</a>
                    </td>
                    
                    <td>
    
                        <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' />
                    </td>
                    <td>
                        <asp:DropDownList ID="DDL" runat="server" SelectedValue='<%#Eval("CategoryId") %>' DataTextField="Name" DataValueField="Id" DataSourceID="odsCategory" Enabled="false">
                        </asp:DropDownList>
                        
                    </td>
                  
                    <td>
    
                        <asp:Label ID="PicPathLabel" runat="server" Text='<%# Eval("PicPath") %>' />
                    </td>
                </tr>
            </ItemTemplate>
            <LayoutTemplate>
                <table runat="server">
                    <tr runat="server">
                        <td runat="server">
                            <table ID="itemPlaceholderContainer" runat="server" border="0" style="">
                                <tr runat="server" style="">
                                    <th runat="server">
                                    </th>
                                   
                                    <th runat="server">
                                        名称</th>
                                    <th runat="server">
                                        类别</th>
                                   <th  runat="server">
                                        图片</th>
                                </tr>
                                <tr runat="server" ID="itemPlaceholder">
                                </tr>
                            </table>
                        </td>
                    </tr>
                    <tr runat="server">
                        <td runat="server" style="">
                            <asp:DataPager ID="DataPager1" runat="server">
                                <Fields>
                                    <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
                                        ShowLastPageButton="True" />
                                </Fields>
                            </asp:DataPager>
                        </td>
                    </tr>
                </table>
            </LayoutTemplate>
            
            
            
        </asp:ListView>
    </asp:Content>

        4).EditProduct.aspx(单个产品处理),在修改图片时我们用到了<asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Bind("PicPath") %>' />,这个元素是在用户修改用户其它信息而不是图片时,用它来保存原来信息的值,把它做成参数提交给sql语句中的<asp:Parameter Name="PicPath" Type="String" />参数,否则更新后图片会丢失

        

    <%@ Page Title="" Language="C#" MasterPageFile="~/master/SetFront.Master" AutoEventWireup="true" CodeBehind="EditProduct.aspx.cs" Inherits="企业网站.Admin.EditProduct" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <asp:ObjectDataSource ID="odsProduct" runat="server" DeleteMethod="Delete" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetDataById" 
            TypeName="企业网站.DAL.DataSetProductTableAdapters.T_ProductsTableAdapter" 
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_Id" Type="Int64" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="Name" Type="String" />
                <asp:Parameter Name="CategoryId" Type="Int32" />
                <asp:Parameter Name="PicPath" Type="String" />
                <asp:Parameter Name="Description" Type="String" />
            </InsertParameters>
            <SelectParameters>
                <asp:QueryStringParameter Name="Id" QueryStringField="Id" Type="Int64" />
            </SelectParameters>
            <UpdateParameters>
                <asp:Parameter Name="Name" Type="String" />
                <asp:Parameter Name="CategoryId" Type="Int32" />
                <asp:Parameter Name="PicPath" Type="String" />
                <asp:Parameter Name="Description" Type="String" />
                <asp:Parameter Name="Original_Id" Type="Int64" />
            </UpdateParameters>
        </asp:ObjectDataSource>
        <asp:ObjectDataSource ID="odsCategory" runat="server" DeleteMethod="Delete" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetData" 
            TypeName="企业网站.DAL.DataSetProductTableAdapters.T_ProductsCategoryTableAdapter" 
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_Id" Type="Int32" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="Name" Type="String" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="Name" Type="String" />
                <asp:Parameter Name="Original_Id" Type="Int32" />
            </UpdateParameters>
        </asp:ObjectDataSource>
        <asp:FormView ID="FormView1" runat="server" DataKeyNames="Id" 
            DataSourceID="odsProduct" oniteminserted="FormView1_ItemInserted" 
            onitemupdated="FormView1_ItemUpdated" 
            oniteminserting="FormView1_ItemInserting" 
            onitemupdating="FormView1_ItemUpdating" 
            onitemcommand="FormView1_ItemCommand">
            <EditItemTemplate>
                Id:
                <asp:Label ID="IdLabel1" runat="server" Text='<%# Eval("Id") %>' />
                <br />
                Name:
                <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
                <br />
                CategoryId:
    
                <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("CategoryId") %>' DataTextField="Name" DataValueField="Id" DataSourceID="odsCategory" />           
                <br />
                PicPath:
                <img id="Img1" src='<%#ResolveClientUrl("~/upload/images/"+Eval("PicPath")) %>' alt="没有图片" runat="Server" />
                <asp:FileUpload ID="FileUpload1" runat="server" />
                <asp:HiddenField ID="HiddenField1" runat="server" Value='<%#Bind("PicPath") %>' />
                <br />
                Description:
                <asp:TextBox ID="DescriptionTextBox" runat="server"  TextMode="MultiLine" Columns="20" Rows="5"
                    Text='<%# Bind("Description") %>' />
                <br />
                <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
                    CommandName="Update" Text="更新" />
                &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
                    CausesValidation="False" CommandName="Cancel" Text="取消" />
            </EditItemTemplate>
            <InsertItemTemplate>
                Name:
                <asp:TextBox ID="NameTextBox" runat="server" Text='<%# Bind("Name") %>' />
                <br />
                CategoryId:
                <asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Bind("CategoryId") %>' DataTextField="Name" DataValueField="Id" DataSourceID="odsCategory" />           
               
                <br />
                PicPath:
                <img id="img1" src='<%#ResolveClientUrl("~/upload/images/"+Eval("PicPath")) %>' alt="没有图片" runat="Server" />
                <asp:FileUpload ID="FileUpload1" runat="server" />
                
                <br />
                Description:
                <asp:TextBox ID="DescriptionTextBox" runat="server" TextMode="MultiLine" Columns="20" Rows="5"
                    Text='<%# Bind("Description") %>' />
                <br />
                <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
                    CommandName="Insert" Text="插入" />
                &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
                    CausesValidation="False" CommandName="Cancel" Text="取消" />
            </InsertItemTemplate>
           
        </asp:FormView>
    </asp:Content>

    cs源码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    
    namespace 企业网站.Admin
    {
        public partial class EditProduct : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    string action=Request["action"];
                    if (action == "addnew")
                        FormView1.ChangeMode(FormViewMode.Insert);
                    else if (action == "edit")
                        FormView1.ChangeMode(FormViewMode.Edit);
                    else
                        throw new Exception("错误的action:" + action);
                }
               
            }
    
            protected void FormView1_ItemInserted(object sender, FormViewInsertedEventArgs e)
            {
                Response.Redirect("ListProduct.aspx");
            }
    
            protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
            {
                Response.Redirect("ListProduct.aspx");
            }
    
            protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
            {
                FileUpload fu = (FileUpload)FormView1.FindControl("FileUpload1");
                if (fu.HasFile)
                {
                    string fileext = Path.GetExtension(fu.FileName);
                    if ((fileext == ".jpg") || (fileext == ".jpeg") || (fileext == ".png") || (fileext == ".bmp"))
                    {
                        fu.SaveAs(Server.MapPath("~/upload/images/"+ fu.FileName));
                       
                        e.Values["PicPath"] = fu.FileName;
    
    
                    }
                    else
                    {
                        e.Cancel = true;
                        ClientScript.RegisterStartupScript(GetType(), "错误", "alert('文件格式不正确.');", true);
                    }
                }
            }
    
            protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)
            {
                FileUpload fu = (FileUpload)FormView1.FindControl("FileUpload1");
                if (fu.HasFile)
                {
                    string fileext = Path.GetExtension(fu.FileName);
                    if ((fileext == ".jpg") || (fileext == ".jpeg") || (fileext == ".png") || (fileext == ".bmp"))
                    {
                        fu.SaveAs(Server.MapPath("~/upload/images/" + fu.FileName));
                       
                        e.NewValues["PicPath"] = fu.FileName;
    
                    }
                    else
                    {
                        e.Cancel = true;
                        ClientScript.RegisterStartupScript(GetType(), "错误", "alert('文件格式不正确.');", true);
                    }
                }
            }
    
            protected void FormView1_ItemCommand(object sender, FormViewCommandEventArgs e)
            {
                if (e.CommandName == "Cancel")
                    Response.Redirect("ListProduct.aspx");
            }
        }
    }

    10.错误页面处理

       1).打开webconfig页面,设定当网站出错时,会自动 到错误页的设置,在customErrors 中mode有on,off,remoteonly三种,on表示在网站的服务器上也可以看到出错的页面,off表示关闭错误网页的显示,这样会显示网站的具体出错信息,一般用remoteonly就可以,让远端用户可以看到出错的页面,而在本地可以看到具体出错信息。defaultRedirect表示出错后默认转到的出错页,如果是网页找不到,则我们可以用statuscode来决定转到哪个业面。

      

    <?xml version="1.0" encoding="utf-8"?>
    
    <!--
      有关如何配置 ASP.NET 应用程序的详细消息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    
    <configuration>
        <connectionStrings>
            <add name="DBConnectionString" connectionString="Data Source=.SQLEXPRESS;AttachDbFilename=|DataDirectory|DB.mdf;Integrated Security=True;User Instance=True"
                providerName="System.Data.SqlClient" />
        </connectionStrings>
      
        <system.web>
          <customErrors mode="On" redirectMode="ResponseRewrite" defaultRedirect="~/ErrorPages/defaultErr.aspx">
            <error statusCode="404" redirect="~/ErrorPages/FileNotFound.htm" />
          </customErrors>
            <compilation debug="true" targetFramework="4.0" />
          <httpRuntime requestValidationMode="2.0"/>
        </system.web>
    
    </configuration>

     出错默认页面,defaultErr.aspx的html

       

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="defaultErr.aspx.cs" Inherits="企业网站.ErrorPages.defaultErr" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        出错啦!
         
        </div>
        </form>
        <a href="/default.aspx">返回首页</a>
    </body>
    </html>

    当调用出错的默认页面时,可以把出错的详细 信息写在具体的文件中,如本例中ErrorRecords.txt。如果要把出错信息写到文件中则需要更改webconfig中customErrors的redirectMode=ResponseRewrite才行.这样当错误面弹出时就会把详细信息写到文本中。

    以下为cs:

     protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                  Exception ex=  HttpContext.Current.Server.GetLastError();
                  File.AppendAllText(Server.MapPath("~/ErrorRecords.txt"), ex.StackTrace);
                }
            }

    找不到文件的页面:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <body>
      对不起,你找的资源丢失了.
      <a href="/default.aspx">返回首页</a>
    </body>
    </html>

    11.测试错误页,建立一错误页面ErrorTest.aspx,它的load事件中写入如下语句进行测试即可。

     protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    SqlConnection conn = new SqlConnection("IP:127.0.0.1&db=tt");
                    conn.Open();
                }
            }

    12.其它和功能基本都一样,以下为运行截图

     

         

  • 相关阅读:
    My Eclipse
    那一夜,我被梦中笑醒的事之(数据库)
    KTV项目总结
    欢迎来到,数据库联盟!
    学习手工创建表,表关系以及用exists 来查询
    sql 将Null 值转化成空字符串
    jquery toggle
    推荐一个不错的配色网站
    css之zindex
    关于前后端分离与不分离
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3171302.html
Copyright © 2011-2022 走看看