zoukankan      html  css  js  c++  java
  • ASP.NET学习笔记三

    1、控件的属性和方法

    属性

    描述

    ClientID

    返回控件在浏览器端生成的标识符

    Controls

    返回当前控件的子控件集合

    EnableViewState

    返回或设置当前控件是否使用视图状态功能

    ID

    返回或设置当前控件在页面中的唯一标识

    Page

    返回当前页面的父页面引用

    Parent

    返回当前控件父控件的引用,即其所在的容器控件

    Visible

    返回或设置当前控件是否呈现在页面中

    2、单选按钮与复选框

     3、控制权转移控件

    <h3>控制权转移控件</h3>
            <asp:Button ID="btn1" runat="server" Text="普通按钮" PostBackUrl="~/server.aspx" CommandArgument="hello" />
            <asp:LinkButton ID="lbtn2" runat="server" Text="超链接按钮" PostBackUrl="~/server.aspx" CommandArgument="hello"/>
            <asp:ImageButton ID="imgbtn3" runat="server" ImageUrl="~/images/regist.gif" PostBackUrl="~/server.aspx" CommandArgument="hello" />
            <br />
    
          <%--  仅仅是转换成普通的超链接a标签,不能提交 表单和跨页提交数据--%>
            <asp:HyperLink ID="hl1" runat="server" Text="普通超链接" NavigateUrl="~/server.aspx"/>
    protected void Page_Load(object sender, EventArgs e)
            {
                txt.CssClass = "txt";
                //txt.Text = DateTime.Now.ToString();
    
                hl1.Target = "_blank";
            }

    四、FileUpload控件(实现文件的上传和下载)

    <form id="form1" runat="server" enctype="multipart/form-data">
        <div>
            头像:<input type="file" name="uploadFile" />
            <asp:Button ID="btnupload" runat="server" Text="上传文件" OnClick="btnupload_Click" />
        </div>
        </form>
    protected void btnupload_Click(object sender, EventArgs e)
            {
                //获得客户端上传的文件集合
                HttpFileCollection files = Request.Files;
                //获得指定的文件对象
                HttpPostedFile file = files[0];
                if (file.FileName == "")
                {
                    Response.Write("<script>alert('请选择文件上传');</script>");
                    return;
                }
                //if(file.ContentLength>10*1024)
                //{
                //    Response.Write("<script>alert('上传的文件不能超过10KB,请压缩后上传');</script>");
                //    return;
                //}
                //组装服务器端路径
                string serverPath = "~/uploadFolder/" + file.FileName;
                serverPath = Server.MapPath(serverPath);//上传的路径必须是物理路径
                file.SaveAs(serverPath);//实现上传
                Response.Write("<script>alert('上传成功');</script>");
            }

    后端代码也可以为:

    protected void btnupload_Click(object sender, EventArgs e)
            {
                if(!myFile.HasFile)
                {
                    Response.Write("<script>alert('请选择文件上传');</script>");
                    return;
                }
                HttpPostedFile file = myFile.PostedFile;
                //if (file.ContentLength > 10 * 1024)
                //{
                //    Response.Write("<script>alert('上传的文件不能超过10KB,请压缩后上传');</script>");
                //    return;
                //}
                //组装服务器端路径
                string serverPath = "~/uploadFolder/" + file.FileName;
                serverPath = Server.MapPath(serverPath);//上传的路径必须是物理路径
                file.SaveAs(serverPath);//实现上传
                Response.Write("<script>alert('上传成功');</script>");
            }

    批量上传文件代码:

    <form id="form1" runat="server" enctype="multipart/form-data">
        <div>
            <input type="button" name="btnaddFile" value="点击上传" id="btnaddFile" />
             <asp:Button ID="btnuploadFile" runat="server" Text="批量上传" OnClick="btnuploadFile_Click"  />
        </div>
    
        <div id="files">
    
        </div>
    
           
        </form>
    
        <script src="scripts/jquery.js"></script>
        <script>
            $(function () {
                var i = 1;
                $("#btnaddFile").click(function () {              
    
                    var file = $("<input type='file' class='file' name='file" + i + "'/><br/>");
                    $("#files").append(file);
                    i++;
                })
            })
        </script>
    protected void btnuploadFile_Click(object sender, EventArgs e)
            {
                if (Request.Files.Count == 0)            
                    return;
                int count = 0;
                for(int i = 0; i < Request.Files.Count; i++)
                {
                    HttpPostedFile file = Request.Files[i];
                    string name = file.FileName;
    
                    if(name!="")
                    {
                        string path = "~/uploadFolder/" + name;
                        path = Server.MapPath(path);
    
                        file.SaveAs(path);
    
                        count++;
                    }
                }
    
                Response.Write("<script>alert('成功上传" + count + "个文件')</script>");
               
            }

    5、下载文件

    <form id="form1" runat="server">
        <div>
            <asp:HyperLink ID="hlDownLoad" runat="server" Text="点击下载"/><br />
    
            <asp:Button ID="btnDownLoad" runat="server" Text="点击下载"  OnClick="btnDownLoad_Click"/>
        </div>
        </form>
    protected void Page_Load(object sender, EventArgs e)
            {
                //下载时提代文件的虚拟路径或相对路径
                //hlDownLoad.NavigateUrl = "~/uploadFolder/逻辑题.doc";
                //hlDownLoad.Text = "逻辑题.doc";
    
                //hlDownLoad.NavigateUrl = "~/uploadFolder/test.xlsx";
                //hlDownLoad.Text = "test.xlsx";
    
                //hlDownLoad.NavigateUrl = "~/uploadFolder/test.txt";
                //hlDownLoad.Text = "test.txt";
    
                hlDownLoad.NavigateUrl = "~/uploadFolder/book.jpg";
                hlDownLoad.Text = "book.jpg";
            }
    
            protected void btnDownLoad_Click(object sender, EventArgs e)
            {
                string fileName = "book.jpg";
                string path = "~/uploadFolder/" + fileName;
                path = Server.MapPath(path);
                byte[] bytes = null;
                using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
                {
                    //创建字节数组缓冲区
                     bytes= new byte[fs.Length];
                    //读取文件到字节数组中
                    fs.Read(bytes, 0, bytes.Length);
                }
                //通知浏览器文件是以附件形式下载,而不是直接打开的
                Response.AddHeader("Content-Disposition", "attachment;Filename="+fileName);
                //将缓冲区的字节数组下载到本地
                Response.BinaryWrite(bytes);
                //停止当前页的执行
                Response.End();
            }

    6、droplist和listbox控件

    <form id="form1" runat="server">
        <div>
            班级:<asp:DropDownList ID="drpClass" runat="server"
                OnSelectedIndexChanged="drpClass_SelectedIndexChanged" Width="150">             
                   </asp:DropDownList>
            <br />
    
            学员:<asp:ListBox ID="lstStudents" runat="server" Width="150" SelectionMode="Multiple">            
               </asp:ListBox>
        </div>
        </form>
        <script src="scripts/jquery.js"></script>
        <script>
            $(function () {
    
                $("#drpClass").change(function () {
                   var cno=$(this).val();//班级编号
                   if (cno != "-99")
                       $("#form1").submit();//手动提交表单
                   else
                       $("#lstStudents").get(0).options.length = 0; //清空下拉列表            
                })
    
    
            })
        </script>
    private void LoadClass()
            {
               
                List<@class> lstClass = db.@class.ToList();
                lstClass.Insert(0,new @class { className = "--请选择班级--", classNo = "-99" });
    
                #region 方法1:使用Items属性
                //foreach (var c in lstClass)
                //{
                //    ListItem item = new ListItem { Text = c.className, Value = c.classNo };
                //    drpClass.Items.Add(item);
                //}
                
                #endregion
    
                #region 方法2:使用DataSource属性
                drpClass.DataSource = lstClass;//设置数据源
                drpClass.DataTextField = "className";//显示的属性是数据源中的哪个字段或属性
                drpClass.DataValueField = "classNo";//隐藏的属性是数据源中的哪个字段或属性
                drpClass.DataBind();//将当前控件的数据绑定至控件中,一定要调用
                #endregion
            }
    
            /// <summary>
            /// 班级下拉列表选项改变时触发
            /// </summary>       
            protected void drpClass_SelectedIndexChanged(object sender, EventArgs e)
            {
                string cno = drpClass.SelectedValue;//获取当前选中班级的班级编号
                LoadStudents(cno);
               
            }
            /// <summary>
            /// 根据班级编号加载学员
            /// </summary>
            /// <param name="cno">班级编号</param>
            private void LoadStudents(string cno)
            {
                List<student> lststus = db.student.Where(s => s.classNo == cno).ToList();          
    
                lstStudents.DataSource = lststus;
                lstStudents.DataTextField = "sname";
                lstStudents.DataValueField = "sno";
                lstStudents.DataBind();
            }

     7.验证控件

    <form id="form1" runat="server">
            <div>
                <div>
                    <label>用户名:</label>
                    <asp:TextBox ID="txtUserName" runat="server" />
                    <asp:RequiredFieldValidator ID="userNameRequiredValidator" runat="server"
                        ErrorMessage="用户名不能为空" ControlToValidate="txtUserName" SetFocusOnError="True" Display="None" />
                </div>
                <div>
                    <label>密码:</label>
                    <asp:TextBox ID="txtPwd" runat="server" />
                    <asp:RequiredFieldValidator ID="pwdRequiredValidator" runat="server"
                        ErrorMessage="密码不能为空" ControlToValidate="txtPwd" SetFocusOnError="True" Display="None" />
                </div>
                <div>
                    <label>确认密码:</label>
                    <asp:TextBox ID="txtPwdConfirm" runat="server" />
                    <asp:RequiredFieldValidator ID="pwdConfirmRequiedValidator" runat="server"
                        ErrorMessage="确认密码不能为空" ControlToValidate="txtPwdConfirm" SetFocusOnError="True" Display="Dynamic" />
                    <asp:CompareValidator ID="pwdComapreValidator" runat="server" ErrorMessage="两次密码不一致"
                        ControlToCompare="txtPwd" ControlToValidate="txtPwdConfirm" Display="Dynamic" />
                </div>
                <div>
                    <label>出生日期:</label>
                    <asp:TextBox ID="txtBirth" runat="server" />
                    <asp:CompareValidator ID="birthCompareValidator" runat="server" ErrorMessage="出生日期有误"
                        ControlToValidate="txtBirth" Display="Dynamic" Operator="LessThan" Type="Date" />
                </div>
                <div>
                    <label>工作年限:</label>
                    <asp:TextBox ID="txtWorkYears" runat="server" />
                    <asp:RangeValidator ID="workYearsRangeValidator" runat="server"
                        ErrorMessage="工作年限必须在3-10年" ControlToValidate="txtWorkYears"
                        MaximumValue="10" MinimumValue="3" SetFocusOnError="True" Type="Double" />
                </div>
    
                <div>
                    <label>工作邮箱:</label>
                    <asp:TextBox ID="txtEmail" runat="server" />
                    <asp:RegularExpressionValidator ID="emailRegularValiator" runat="server" ErrorMessage="电子邮箱不正确"
                        SetFocusOnError="true" ValidationExpression="w+@w+.w+" ControlToValidate="txtEmail" />
                </div>
    
                <div>
                    <label>掌握技能:</label>
                    <asp:CheckBox ID="chk1" runat="server" Text="C#" />
                    <asp:CheckBox ID="chk2" runat="server" Text="SQL Server" />
                    <asp:CheckBox ID="chk3" runat="server" Text="javascript" />
                    <asp:CheckBox ID="chk4" runat="server" Text="asp.net" />
                    <asp:CustomValidator ID="skillValidator" runat="server" ErrorMessage="至少掌握两项技能"
                        OnServerValidate="skillValidator_ServerValidate"
                        ClientValidationFunction="checkSkill" />
                </div>
    
                <div>
                    <asp:Button ID="btnsubmit" runat="server" Text="注册" OnClick="btnsubmit_Click" ValidationGroup="A" />
                </div>
            </div>
    
            <div>
                <asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox="true" ShowSummary="false"/>
            </div>
        </form>
    protected void Page_Load(object sender, EventArgs e)
            {
                //设置出生日期比较验证控件要比较的值是当前系统日期
                birthCompareValidator.ValueToCompare = DateTime.Now.ToShortDateString();
            }
            /// <summary>
            /// 强制重新验证
            /// </summary>
            //public override void Validate()
            //{
            //    if (txtUserName.Text.Length < 6)
            //        userNameRequiredValidator.IsValid = false;
            //}
    
            protected void btnsubmit_Click(object sender, EventArgs e)
            {
                if (IsValid)
                    Response.Write("ok");
            }
    
            protected void skillValidator_ServerValidate(object source, ServerValidateEventArgs args)
            {
                int count = 0;
                if (chk1.Checked)
                    count++;
                if (chk2.Checked)
                    count++;
                if (chk3.Checked)
                    count++;
                if (chk4.Checked)
                    count++;
                if (count < 2)
                {
                    args.IsValid = false;
                }
            }

    8.简单绑定

    示例1:

     <form id="form1" runat="server">
        <div>
            <div>
                姓名:<asp:TextBox ID="txtname" runat="server" Text="<%#name%>" /><br />
                年龄:<%=age%><br />
                头像:<asp:Image ID="imgFace" runat="server" ImageUrl="<%#path%>" /><br />
    
            </div>
    
            <div>
                <%
                    for(int i=0;i<10;i++)
                    {
                        Response.Write(i + "<br>");
                    }
                %>
            </div>
        </div>
        </form>
    public string name = "张三";
            public string path = "~/images/1.gif";
            public int age = 20;
            protected void Page_Load(object sender, EventArgs e)
            {
                //this:aspx文件形成的类
                //Response.Write(this.GetType().ToString()+"<br/>");
                //Response.Write(this.GetType().BaseType.ToString());
    
                this.DataBind();
            }

    示例2:

    <form id="form1" runat="server">
        <div>
            <table border="1" style="1000px">
                <tr>
                    <td colspan="3" style="text-align:center"><h3>人气投票</h3></td>
                </tr>
                <tr>
                    <td class="auto-style1">张三</td>
                    <td class="auto-style2">
                        <asp:Label ID="lblZS" runat="server" BackColor="Yellow" 
                            Text="<%#zs%>" Width="<%#zs*10 %>" />
                        <%#GetPercent(zs)%>
                    </td>
                    <td>
                        <asp:Button ID="btnZS" runat="server" Text="投票" OnClick="btnZS_Click" />
                    </td>
                </tr>
                 <tr>
                    <td class="auto-style1">李四</td>
                    <td class="auto-style2">
                        <asp:Label ID="lblLS" runat="server" BackColor="Green"
                             Text="<%#ls%>" Width="<%#ls*10 %>" />
                            <%#GetPercent(ls)%>
                    </td>
                    <td>
                        <asp:Button ID="btnLS" runat="server" Text="投票" OnClick="btnLS_Click"/>
                    </td>
                </tr>
                 <tr>
                    <td class="auto-style1">王五</td>
                    <td class="auto-style2">
                        <asp:Label ID="lblWW" runat="server" BackColor="YellowGreen" 
                            Text="<%#ww%>" Width="<%#ww*10 %>" />
                            <%#GetPercent(ww)%>
                    </td>
                    <td>
                        <asp:Button ID="btnWW" runat="server" Text="投票" OnClick="btnWW_Click" />
                    </td>
                </tr>
            </table>
        </div>
        </form>
    public static int zs = 0;
            public static int ls = 0;
            public static int ww = 0;
            protected void Page_Load(object sender, EventArgs e)
            {
                if(!IsPostBack)
                    this.DataBind();
            }
    
            protected void btnZS_Click(object sender, EventArgs e)
            {
                zs++;
                this.DataBind();
            }
    
            protected void btnLS_Click(object sender, EventArgs e)
            {
                ls++;
                this.DataBind();
            }
    
            protected void btnWW_Click(object sender, EventArgs e)
            {
                ww++;
                this.DataBind();
            }
    
            /// <summary>
            /// 计算百分比
            /// </summary>
            /// <param name="num"></param>
            /// <returns></returns>
            public string GetPercent(double num)
            {
                if (num == 0)
                    return "0.00%";
                double sum = zs + ls + ww;
                double rate = num*100 / sum;
                return rate.ToString("n2") + "%";
            }

    9.GridView数据绑定控件

             列的类型

    BoundField         设置DataField="要绑定数据源中的字段"
    HypterLinkField  设置DataTextField="要显示的是数据源中的哪个字段"
                               DataNavigateUrlFormatString="要跳转的页面路径"
                               DataNavigateUrlFields="页面路径中查询字符串的值是哪个属性"
    CheckBoxField   设置DataField="要绑定数据源中的布尔类型的字段"
    ImageField         设置DataImageUrlField="要绑定数据源中的图片路径的字段"
    ButtonField         显示按钮 ,可以设置CommandName,用以指定按钮的用途
    CommandField   显示指定的操作,如删除,编辑

    TemplateField    模板列,用于自定义显示数据
                               HeaderTemplate:头部模板 显示提示信息
                               FooterTemplate:脚注模板 显示汇总信息 设置GridView ShowFooter="true"
                               ItemTemplate:项目模板 绑定数据源中要显示的属性或字段 <%#Bind("字段")%>
                               AlternatingItemTemplate:交替项模板
                               EditItemTemplate:编辑模板

    示例1:

    <form id="form1" runat="server">
            <div>
                <asp:GridView ID="gvStudents"  runat="server" AutoGenerateColumns="false" OnRowDeleting="gvStudents_RowDeleting">
                    <Columns>
                        <asp:BoundField HeaderText="学号" DataField="sno" />
                        <asp:HyperLinkField HeaderText="姓名" DataTextField="sname"
                            DataNavigateUrlFormatString="~/details.aspx?no={0}"
                            DataNavigateUrlFields="sno" />
                        <asp:CheckBoxField HeaderText="性别" DataField="sex" />
                        <asp:BoundField HeaderText="邮箱" DataField="semail" />
                        <asp:BoundField HeaderText="地址" DataField="saddress" />
                        <asp:BoundField HeaderText="出生日期" DataField="sbirthday" DataFormatString="{0:yyyy-MM-dd}" />
                        <asp:ImageField HeaderText="头像" DataImageUrlField="faceUrl" />
                        <asp:ButtonField HeaderText="" Text="删除" ButtonType="Button" CommandName="delete"/>
                        <asp:CommandField HeaderText="操作" ShowDeleteButton="true" ShowEditButton="true" ShowSelectButton="true" ButtonType="Button" /> 
                    </Columns>
                </asp:GridView>
            </div>
        </form>
     StuDBDataContext db = new StuDBDataContext();
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                    LoadStudents();
            }
    
            private void LoadStudents()
            {
                List<student> lstStudents = db.student.ToList();
                foreach (var item in lstStudents)
                {
                    item.faceUrl = "~/images/" + item.faceUrl;
                }
    
                gvStudents.DataSource = lstStudents;
    
                this.DataBind();
            }
    
            protected void gvStudents_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                Response.Write("删除成功");
            }

    示例2:

    <form id="form1" runat="server">
        <div>
            <asp:GridView ID="gvStudents" runat="server" AutoGenerateColumns="false"
                 ShowFooter="true">
                <Columns>
                   <%-- 学号--%>
                    <asp:TemplateField>
                        <HeaderTemplate>学号</HeaderTemplate>
                       <%-- <FooterTemplate>
                            <asp:TextBox ID="txt" runat="server" />
                        </FooterTemplate>--%>
                        <ItemTemplate>
                            <asp:Label ID="lblsno" runat="server" Text='<%#Bind("sno") %>' />
                        </ItemTemplate>
                       <%-- <AlternatingItemTemplate>
                             <asp:TextBox ID="txtsno" runat="server" Text='<%#Bind("sno") %>' />
                        </AlternatingItemTemplate>--%>
                        <EditItemTemplate>
                            <asp:TextBox ID="txtsno" runat="server" Text='<%#Bind("sno") %>' />
                        </EditItemTemplate>
                    </asp:TemplateField>
                
                   <%-- 姓名--%>
                    <asp:TemplateField HeaderText="姓名">
                         <ItemTemplate>
                            <asp:Label ID="lblsname" runat="server" Text='<%#Eval("sname") %>' />
                             <%--<asp:HyperLink ID="hlsname" runat="server" NavigateUrl="~/details.aspx" 
                                 Text='<%#Eval("sname") %>' />--%>
                        </ItemTemplate>
                    </asp:TemplateField>
    
                   <%-- 性别--%>
                    <asp:TemplateField HeaderText="性别">
                        <ItemTemplate>
                             <asp:Label ID="lblsex" runat="server" Text='<%#(bool)Eval("sex")?"男":"女"%>' />
                        </ItemTemplate>
                    </asp:TemplateField>
    
                    <%--邮箱--%>
                     <asp:TemplateField HeaderText="邮箱">
                         <ItemTemplate>
                            <asp:Label ID="lblsemail" runat="server" Text='<%#Eval("semail") %>' />                        
                        </ItemTemplate>
                    </asp:TemplateField>
    
                      <%--家庭地址--%>
                     <asp:TemplateField HeaderText="家庭地址">
                         <ItemTemplate>
                            <asp:Label ID="lblsaddress" runat="server" Text='<%#Eval("saddress") %>' />                        
                        </ItemTemplate>
                    </asp:TemplateField>
    
                     <%--出生日期--%>
                     <asp:TemplateField HeaderText="出生日期">
                         <ItemTemplate>
                            <asp:Label ID="lblsbirthday" runat="server" Text='<%#((DateTime)Eval("sbirthday")).ToShortDateString() %>' />                        
                        </ItemTemplate>
                    </asp:TemplateField>
    
                    <%--头像--%>
                     <asp:TemplateField HeaderText="头像">
                         <ItemTemplate>
                           <asp:Image ID="imgface" runat="server" ImageUrl='<%#Eval("faceUrl") %>' />                        
                        </ItemTemplate>
                    </asp:TemplateField>
    
                    <%--操作--%>
                    <asp:TemplateField HeaderText="头像">
                        <ItemTemplate>
                            <asp:Button ID="btndelete" runat="server" Text="删除" CommandName="delete" />
                            <asp:LinkButton ID="btnedit" runat="server" Text="编辑" CommandName="edit"/>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
        </form>
    StuDBDataContext db = new StuDBDataContext();
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                    LoadStudents();
            }
            private void LoadStudents()
            {
                List<student> lstStudents = db.student.ToList();
                foreach (var item in lstStudents)
                {
                    item.faceUrl = "~/images/" + item.faceUrl;
                }
                gvStudents.DataSource = lstStudents;
    
                this.DataBind();
            }

    示例3:

    <form id="form1" runat="server">
        <div id="divdata">
            <asp:GridView ID="gvStudents" runat="server" DataKeyNames="sno"
                 AutoGenerateColumns="false" OnRowDeleting="gvStudents_RowDeleting" 
                OnRowEditing="gvStudents_RowEditing" OnRowCancelingEdit="gvStudents_RowCancelingEdit"
                 OnRowDataBound="gvStudents_RowDataBound" OnRowUpdating="gvStudents_RowUpdating"
                 AllowPaging="true" PageSize="3" OnPageIndexChanging="gvStudents_PageIndexChanging" OnSelectedIndexChanging="gvStudents_SelectedIndexChanging">
                <Columns>
                   <%-- 复选框--%>
                    <asp:TemplateField>
                        <HeaderTemplate>
                            <input type="checkbox" id="chkAll" />
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chkDelete" runat="server"/>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <%--学号--%>
                     <asp:TemplateField HeaderText="学号">                       
                        <ItemTemplate>
                            <asp:Label ID="lblsno" runat="server" Text='<%#Bind("sno") %>' />
                        </ItemTemplate>                                 
                        <EditItemTemplate>
                            <asp:TextBox ID="txtsno" runat="server" Text='<%#Bind("sno") %>' ReadOnly="true" />
                        </EditItemTemplate>
                    </asp:TemplateField>
    
                      <%-- 姓名--%>
                    <asp:TemplateField HeaderText="姓名">
                         <ItemTemplate>
                            <asp:Label ID="lblsname" runat="server" Text='<%#Eval("sname") %>' />                        
                        </ItemTemplate>
                        <EditItemTemplate>
                             <asp:TextBox ID="txtsname" runat="server" Text='<%#Bind("sname") %>' />
                        </EditItemTemplate>
                    </asp:TemplateField>
    
                      <%-- 性别--%>
                    <asp:TemplateField HeaderText="性别">
                        <ItemTemplate>
                             <asp:Label ID="lblsex" runat="server" Text='<%#(bool)Eval("sex")?"男":"女"%>' />
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:DropDownList ID="drpSex" runat="server">
                                <asp:ListItem Value="-1">--请选择--</asp:ListItem>
                                 <asp:ListItem Value="1">男</asp:ListItem>
                                 <asp:ListItem Value="0">女</asp:ListItem>
                            </asp:DropDownList>
                        </EditItemTemplate>
                    </asp:TemplateField>
    
                      <%--邮箱--%>
                     <asp:TemplateField HeaderText="邮箱">
                         <ItemTemplate>
                            <asp:Label ID="lblsemail" runat="server" Text='<%#Eval("semail") %>' />                        
                        </ItemTemplate>
                         <EditItemTemplate>
                             <asp:TextBox ID="txtsemail" runat="server" Text='<%#Bind("semail") %>' />
                         </EditItemTemplate>
                    </asp:TemplateField>
                      <%--家庭地址--%>
                     <asp:TemplateField HeaderText="家庭地址">
                         <ItemTemplate>
                            <asp:Label ID="lblsaddress" runat="server" Text='<%#Eval("saddress") %>' />                        
                        </ItemTemplate>
                          <EditItemTemplate>
                             <asp:TextBox ID="txtsaddress" runat="server" Text='<%#Bind("saddress") %>' />
                         </EditItemTemplate>
                    </asp:TemplateField>
    
                     <%--出生日期--%>
                     <asp:TemplateField HeaderText="出生日期">
                         <ItemTemplate>
                            <asp:Label ID="lblsbirthday" runat="server" Text='<%#((DateTime)Eval("sbirthday")).ToShortDateString() %>' />                        
                        </ItemTemplate>
                            <EditItemTemplate>
                             <asp:TextBox ID="txtsbirthday" runat="server" Text='<%#Bind("sbirthday") %>' />
                         </EditItemTemplate>
                    </asp:TemplateField>
    
                    <%--头像--%>
                     <asp:TemplateField HeaderText="头像">
                         <ItemTemplate>
                           <asp:Image ID="imgface" runat="server" ImageUrl='<%#Eval("faceUrl") %>' />                        
                        </ItemTemplate>
                          <EditItemTemplate>
                             <asp:TextBox ID="txtface" runat="server" Text='<%#Bind("faceUrl") %>' />
                         </EditItemTemplate>
                    </asp:TemplateField>
    
                    <%--操作--%>
                    <asp:TemplateField HeaderText="头像">
                        <ItemTemplate>
                            <asp:Button ID="btndelete" runat="server" Text="删除" CommandName="delete" />
                            <asp:Button ID="btnedit" runat="server" Text="编辑" CommandName="edit"/>
                            <asp:Button ID="btnselect" runat="server" Text="选择" CommandName="select" />
                        </ItemTemplate>
                        <EditItemTemplate>
                            <asp:Button ID="btnupdate" runat="server" Text="更新" CommandName="update" />
                            <asp:Button ID="btncancel" runat="server" Text="取消" CommandName="cancel" />
                        </EditItemTemplate>
                    </asp:TemplateField>
    
                   
                </Columns>
            </asp:GridView>
            <asp:Button ID="btnDeleteAll" runat="server" Text="全部删除" OnClick="btnDeleteAll_Click" />
            <asp:TextBox ID="txtsnos" runat="server" Width="300"/>
        </div>
        </form>
        <script src="scripts/jquery.js"></script>
        <script>
            $(function () {
                $("#txtsnos").css("display", "none");
                //设置表格的样式
                $("#gvStudents tbody tr:eq(0)").css({ "height": "30px","background":"pink" });
                $("#gvStudents tbody tr:gt(0):odd").css("background", "lightblue");
                $("#gvStudents tbody tr:gt(0):even").css("background", "#ccc");
                var oldbg;
                $("#gvStudents tbody tr:gt(0)").mouseover(function () {
                    oldbg = $(this).css("background");
                    $(this).css("background", "yellow");
                }).mouseout(function () {
                    $(this).css("background", oldbg);
                })
    
                //全选
                $("#chkAll").click(function () {
                    var state=$(this).prop("checked");
                    $(":checkbox[id*=chkDelete]").each(function (i, chk) {
                        //$(chk).prop("checked", state);
                        //如果当前复选框的状态和全选复选框的状态不一致,就做点击
                        if ($(chk).prop("checked") != state)
                            $(chk).click();
                    })
                })
    
                //反选
                $(":checkbox[id*=chkDelete]").click(function () {
                    var flag = $(":checkbox[id*=chkDelete]").length == $(":checkbox[id*=chkDelete]:checked").length;
                    $("#chkAll").prop("checked", flag);
    
                    var sno=$(this).parent().next().children("span").html();//获得当前复选框的父元素td的下一个兄弟元素td的子元素span中的html代码
                    //点击每一行前面的复选框时
                    //判断当前复选框点击是选中状态还是取消选中状态
                    if ($(this).prop("checked")) {
                        $("#txtsnos").val($("#txtsnos").val()+sno+";");//如果选中,则将当前的学号保存至文本框中
                    } else {
                        $("#txtsnos").val($("#txtsnos").val().replace(sno + ";", ""));//如果是取消选中,则从文本框中删除学号
                    }
                })
    
                //删除
                $(":input[id*=btndelete]").click(function () {
                    if (!confirm("确定要删除吗?"))
                        return false;
                })
    
                //全部删除
                $("#btnDeleteAll").click(function () {
                    if (!confirm("确定要删除选中的学员吗?"))
                        return false;
    
                })
    
            })
        </script>
    StuDBDataContext db = new StuDBDataContext();
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                    LoadStudents();
            }
    
            private void LoadStudents()
            {
                List<student> lstStudents = db.student.ToList();
                foreach (var item in lstStudents)
                {
                    item.faceUrl = "~/images/" + item.faceUrl;
                }
                gvStudents.DataSource = lstStudents;
    
                this.DataBind();
            }
            //删除
            protected void gvStudents_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {
                int deleteState = 0;
                try
                {
                    string sno = gvStudents.DataKeys[e.RowIndex].Value.ToString();//学号               
                    student stu = db.student.FirstOrDefault(s => s.sno == sno);
                    db.student.DeleteOnSubmit(stu);
                    db.SubmitChanges();
                    deleteState = 1;
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
    
                if (deleteState == 1)
                {
                    LoadStudents();
                    Response.Write("<script>alert('删除成功');</script>");
                }
                else
                    Response.Write("<script>alert('删除失败');</script>");
            }
            //编辑
            protected void gvStudents_RowEditing(object sender, GridViewEditEventArgs e)
            {
                gvStudents.EditIndex = e.NewEditIndex;//设置要编辑的这行的索引就是当前点前的这行的索引
                LoadStudents();
            }
            //取消
            protected void gvStudents_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
            {
                gvStudents.EditIndex = -1;
                LoadStudents();
            }
    
            //更新
            protected void gvStudents_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {
                int index = e.RowIndex;
                GridViewRow row = gvStudents.Rows[index];
    
                string sno = gvStudents.DataKeys[e.RowIndex].Value.ToString();
                string sname = ((TextBox)row.FindControl("txtsname")).Text;
    
                bool sex = ((DropDownList)row.FindControl("drpSex")).SelectedValue == "1" ? true : false;
                string semail = ((TextBox)row.FindControl("txtsemail")).Text;
                string saddress = ((TextBox)row.FindControl("txtsaddress")).Text;
                DateTime sbirthday = Convert.ToDateTime(((TextBox)row.FindControl("txtsbirthday")).Text);
                string faceUrl = ((TextBox)row.FindControl("txtface")).Text;
                int modifyState = 0;
                try
                {
                    student stu = db.student.FirstOrDefault(s => s.sno == sno);
                    stu.sno = sno;
                    stu.sname = sname;
                    stu.sex = sex;
                    stu.semail = semail;
                    stu.saddress = saddress;
                    stu.sbirthday = sbirthday;
                    stu.faceUrl = faceUrl.Substring(faceUrl.LastIndexOf("/") + 1);
                    db.SubmitChanges();
                    modifyState = 1;
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                }
    
                if (modifyState == 1)
                {
                    gvStudents.EditIndex = -1;//取消编辑
                    LoadStudents();//重新绑定数据
                    Response.Write("<script>alert('更新成功');</script>");
                }
                else
                    Response.Write("<script>alert('更新失败');</script>");
    
            }
    
            //在绑定每一行时触发
            protected void gvStudents_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                //Response.Write("当前行的下标:" + e.Row.RowIndex+"<br/>");
                //Response.Write("当前行的类型:" + e.Row.RowType.ToString() + "<br/>");
                //Response.Write("当前行的状态:" + e.Row.RowState.ToString() + "<br/>");
    
                string sex = "";//保存当前正在绑定的学员的性别
                if (e.Row.RowType == DataControlRowType.DataRow)
                {
                    string sno = gvStudents.DataKeys[e.Row.RowIndex].Value.ToString();
                    //获得性别
                    student stu = db.student.FirstOrDefault(s => s.sno == sno);
                    sex = (bool)stu.sex ? "1" : "0";
    
                    //判断当前正在绑定的这行学号在不在文本框
                    if(txtsnos.Text.Contains(sno))
                    {
                        //获得当前这行正在绑定的复选框对象
                        CheckBox chk = e.Row.FindControl("chkDelete") as CheckBox;
                        //设置它的状态为选中状态
                        chk.Checked = true;
                    }               
                   
                }
    
                //普通项处于编辑状态,交替项的编辑状态
                if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate))
                {
                    DropDownList drpSex = e.Row.FindControl("drpSex") as DropDownList;
                    if (drpSex != null)
                        drpSex.SelectedValue = sex;//设置性别下拉列表的选中状态是当前学员的性别
    
                    TextBox txtsno = (TextBox)e.Row.FindControl("txtsno");
                    txtsno.Width = 80;
                }
    
    
            }
            //分页
            protected void gvStudents_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                gvStudents.PageIndex = e.NewPageIndex;//设置页码下标
                LoadStudents();
            }
    
            //全部删除
            protected void btnDeleteAll_Click(object sender, EventArgs e)
            {
                string snos = txtsnos.Text;
                string[] snoArr = snos.Split(';');
                for(int i = 0; i < snoArr.Length - 1; i++)
                {
                    string sno = snoArr[i];
                    //student stu = db.student.FirstOrDefault(s => s.sno == sno);
                    //db.student.DeleteOnSubmit(stu);
                    //db.SubmitChanges();
                }
                LoadStudents();
            }      
    
            //选中某行时
            protected void gvStudents_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
            {
                int index = e.NewSelectedIndex;
                string sno = gvStudents.DataKeys[index].Value.ToString();
                Response.Redirect("~/details.aspx/no=" +Server.UrlEncode(sno) + "");
            }
  • 相关阅读:
    实践javascript美术馆的小案例,学习到的东西还是蛮多的,包括javascript编程中的预留退路、分离javascript、以及实现向后兼容等
    HTML5的渐变色 渐变的两种类型 createLinearGradient 和createRadialGradient
    (转)tar 解压缩命令
    VM下的linux系统上不了网?? 使用putty远程登录不上linux的解决方法?
    Js全等和等于
    JavaScript踩坑
    div height 自适应高度 占满剩余高度的方法
    iframe边距问题解决
    Vue.Js初学踩坑
    Linq.js表达式常见写法
  • 原文地址:https://www.cnblogs.com/mango1997/p/14193963.html
Copyright © 2011-2022 走看看