• 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码


    2013-9-15

    1.    CustomValidator验证控件验证用户输入的字符长度

    在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP.NET中我们也可以通过CustomValidator验证控件来实现这一验证。具体如下。

    用户名:<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
            <asp:CustomValidator ID="UserName_CustomValidator" runat="server"  ControlToValidate=" txtUserName " ErrorMessage="字数不应少于6个字符" 
    ClientValidationFunction="Text_ClientValidate"> </asp:CustomValidator> <script language="javascript"> function Text_ClientValidate(source,arguments) { if ((arguments.Value).length>6) arguments.IsValid = true; else arguments.IsValid = false; } </script>

    2.   LinkButton的PostBackUrl使用Eval绑定数据

    在列表页面的操作列里大多时候都可以用一个<a>标签绑定一个列表项的Id进行列表项的编辑和删除,一般情况下列表项的绑定如下:

    <asp:TemplateField HeaderText="操作">
                                        <ItemStyle CssClass="dg_tr_td_operate_center" />
                                        <ItemTemplate>
    
    <a href="CarBookInfoDetail.aspx?mode=edit&BookCarID=<%#Eval("BookCarID")%>" >编辑</a>
          </ItemTemplate>
                                    </asp:TemplateField>
    

     但是有时候根据不同的需求条件可能要限制某些列表项不能编辑,这时候用<a>标签来绑定列表项就不是很合适了,这里就可以用到LinkButton按钮来编辑或者删除列表项,这个时候一般都需要为其PostBackUrl绑定一个列表项的ID,绑定如下:

    <asp:TemplateField HeaderText="操作">
                                        <ItemStyle CssClass="dg_tr_td_operate_center" />
                                        <ItemTemplate>
                                            <asp:LinkButton ID="btnEdit" runat="server" Text="编辑" PostBackUrl='<%#Eval("BookCarID","~/Modules/Car/CarBookInfoDetail.aspx?mode=edit&BookCarID={0}") %>'  />
                                            <asp:LinkButton ID="btnDelete" runat="server" Text="删除" OnClientClick="return window.confirm('确认要删除此记录吗?');"
                                                CommandName="Delete" CommandArgument='<%#Eval("BookCarID") %>'  />
                                        </ItemTemplate>
                                    </asp:TemplateField>
                                </Columns>
    

     3.    Linq 多字段分组统计

    上周用公司的Linq框架做开发,框架本身没有带对返回对象的分组求和统计,在网上查阅了一些资料,具体实现如下,感觉还挺不错的,跟大家分享一下。

    Var carRunDetailCounts= from carRun in db.CarRunDetailInfo
    
                         Group carRun by new{ carRun.CarID,carRun.Name} into car
    
                         Select new {
    
     CarName=car.Key.CarName,
    
     RunCount=sum(car.RunLength)
    
    };
    

    注释:

           首先通过Group carRun By new{ carRun.CarID,carRun.Name} into car把车辆行程明细信息按照车辆Id和车辆名进行分组(group carRun By 后如果需要按照多个字段进行分组,则可以以匿名类的形式列出要分组的项),然后再映射生成一个新的对象,这个时候通过car.Key.CarName来获取分组项的值,通过sum(car.RunLength)来对分组的项进行统计(可以通过sum函数统计多个列的值。

    4.    ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码,点击取消,执行另一段代码

    在实际的开发中confirm对话框中的使用是很频繁的,很多时候我们会在列表的操作列的删除按钮加上这样一段话  OnClientClick=”return confirm(“确认要删除吗?”);”,这个时候弹框的代码直接已经在客户端写好了,但是有时候我们会遇到这样的情况,后台先执行一些代码,比如对用户提交的数据进行后台的验证等,然后弹出confirm对话框,供用户选择,点击确定则执行一段代码,取消则执行令一段代码。

    针对于以上的应用场景我们可以用以下方式在来实现:

    假设有一个表单页面用户点击了保存按钮,其Click事件如下:

    Protected void btn_Save_Click(object sender ,EventArgs e)
    
    {
    
       //执行一段代码
    
       。。。。。。
    
       。。。。。。
    
       //弹出confirm供用户选择
    
       this.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script language='javascript'>$(function(){ if(confirm('是否继续保存?')){ $("[id$='btn_Confirm']").click();}})</script>");
    
    }
    

    这个时候还需要在页面上放置一个宽高均为0px的button按钮,如下:

    <asp:Button ID=”btn_Confrim” Click=”btn_Confrim_Click” runat=”server” width=”0px” height=”0px”/>

    这个按钮对用户来说是不可见的,因为其宽高均为0 ,

    然后还需要再后台添加btn_Confirm的click事件如下:

    Protected void btn_Confrim_Click(Object sender,EventArgs e)

    {

       //可以在该方法中做一些后续的处理,比如保存/修改等等

      。。。。。。。

      。。。。。。

    }

    这种实现的方式类似于Ajax的回掉,有兴趣的朋友可以下去自己看一下,这里就不再细说了。

    好了,今天就总结到这里了,希望可以给大家带来一些帮助。

  • 相关阅读:
    将现有MySQL数据库改为大小写不敏感
    在Windows中玩转Docker Toolbox
    使用ABP EntityFramework连接MySQL数据库
    数据库设计范式2——BC范式和第四范式
    让OData和NHibernate结合进行动态查询
    文档在线预览的实现
    有哪些老鸟程序员知道而新手不知道的小技巧?自我感受
    EEPROM的概念接口类型及软件实例
    flash的几种模式Normal Mode、DUAL Mode、Quad Mode的概念和区别
    ESP8266 打造一款物联网产品---搭建环境编译及烧录
  • 原文地址:https://www.cnblogs.com/Olive116/p/3323269.html
Copyright © 2020-2023  润新知