开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 4318|回复: 1

使用ASPxCallbackPanel 异步验证数据

[复制链接]

0

精华

10

贡献

38

赞扬

实习版主

帖子
18
软币
158
在线时间
10 小时
注册时间
2013-9-30
发表于 2014-5-12 22:22:06 | 显示全部楼层 |阅读模式
其实实现的功能很简单,就是在注册用户的时候通过ajax异步的方式去数据库中判断是否存在相同的记录(这里提醒下,后台也要验证,不然会出现意想不到的后果,我的项目已经有过惨痛的教训了,数据表中存在N条相同的记录,但是原因还不大清楚。)
ASPxCallbackPanel实现起来好像比。net原生的控件稍微复杂那么一点点,不过也还算好用吧。我需要异步操作的控件包裹在ASPxCallbackPanel中:
[HTML] 纯文本查看 复制代码
<dx:ASPxCallbackPanel runat="server"
                                        ID="ASPxCallbackPanel" ClientInstanceName="ASPxCallbackPanel">
                                        <PanelCollection>
                                            <dx:PanelContent runat="server">
                                                <table>
                                                    <tr>
                                                        <td>
                                                            <dx:ASPxTextBox EnableClientSideAPI="True" runat="server"
                                                                ClientInstanceName="txtLoginName" CssClass="Page_Input" ID="txtLoginName" NullText="请输入登录用户名">
                                                                <ValidationSettings>
                                                                    <RequiredField ErrorText="登录名称不能为空" IsRequired="True"></RequiredField>
                                                                </ValidationSettings>
                                                                <ClientSideEvents ValueChanged="function(s,e){
                                                if(txtLoginName.GetText()!=null){
                                                ASPxCallbackPanel.PerformCallback(txtLoginName.GetText().toString());
                                                e.processOnServer=false;
                                                    }
                                                }" />
                                                            </dx:ASPxTextBox>
                                                        </td>
                                                        <td style="text-align:left;">
                                                            <dx:ASPxLabel ForeColor="Red" runat="server" ID="lbErrorText" ClientInstanceName="lbErrorText"></dx:ASPxLabel>
                                                        </td>
                                                    </tr>
                                                </table>
                                            </dx:PanelContent>
                                        </PanelCollection>
                                    </dx:ASPxCallbackPanel>
 


我这里就是操作一个aspxtextbox 和一个 aspxlabel ,方式就是当aspxtextbox 中的文本变化时去异步查询,然后消息在aspxlabel 中显示。
这里面首先用脚本判断了下是否可以获取控件中的值,如果为空则不触发异步。
相应的后台代码:
[C#] 纯文本查看 复制代码
 protected void ASPxCallbackPanel_OnCallback(object sender, CallbackEventArgsBase e)
        {
            if (BLL.SysUser.GetInstance().ExistsSysUesrByLoginName(e.Parameter))
            {
                lbErrorText.Text = "用户名在系统中已经存在,请更换";
            }
        }


大概的意思就是这样,实现起来也不算难,但是效果还是不错的。
7.jpg


评分

参与人数 2贡献 +1 赞扬 +2 收起 理由
ssa521 + 1 + 1 赞一个鼓励
Cactus_CC + 1 赞一个

查看全部评分

回复

使用道具 举报

0

精华

3

贡献

51

赞扬

帖子
50
软币
583
在线时间
72 小时
注册时间
2014-3-12
发表于 2014-5-21 09:56:28 | 显示全部楼层
每一次木总写的贴,我都来顶。木总加油
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-22 15:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表