Asp.net二级窗体实现

  最进写了个练手的bs程序,主要用来熟悉一下bs程序的开发思路。大概功能是一个发送邮件的小功能,用户登录后向其他用户发送邮件。可以选择多个用户进行发送。这里需要点击按钮弹出一个二级子窗体,勾选多个用户,点击确定按钮,将选中的用户名称列表及用户ID列表返回给邮件模块页面。思路是二级窗体界面从服务端构造,在客户端用js调用弹出二级窗体,勾选用户后,使用js遍历勾选的用户获取用户信息列表。

  构造二级窗体界面的部分使用的是Asp.net的ViewGrid控件,这里需要注意的是用户名称和ID都可以使用数据绑定来做,但每个用户前面的勾选框需要用TemplateField标签特殊处理:

        <asp:GridView ID="GridViewUserList" runat="server" Width="279px" 
            AutoGenerateColumns="False" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:TemplateField HeaderText="选择">
                <ItemTemplate>
                <asp:CheckBox ID="CheckBox"  runat="server"/>
                </ItemTemplate>
              </asp:TemplateField>
                <asp:BoundField DataField="UserID" HeaderText="用户编号" />
                <asp:BoundField DataField="Name" HeaderText="用户姓名" />
            </Columns>
        </asp:GridView>

确定及取消按钮:

        <input type="button" id="tbnconfirm" οnclick="script:SelectCheckBox(this)" name="tbnConfirm" value="确定"/>
        <input type="button" id="btncancel" name="btncancel" value="取消" οnclick="javascript:window.close()"/>
Js函数:
    <script type="text/javascript">
    function SelectCheckBox(obj)
         {
             var GridView1 = document.getElementById("<%=GridViewUserList.ClientID %>");
             var returnString = "";
             var returnID = "";
            for(i=1; i < GridView1.rows.length; i++)
            {
                var bool = GridView1.rows[i].cells[0].getElementsByTagName("INPUT")[0];
                var UserID = GridView1.rows[i].cells[1].innerHTML;
                var UserName = GridView1.rows[i].cells[2].innerHTML;
                if (bool.checked == true) {
                    returnString = returnString + UserName + ";";
                    returnID = returnID + UserID + ";";
                }
            }
            returnString = returnString.substring(0, returnString.length - 1);
            returnID = returnID.substring(0, returnID.length - 1);
            var returnValue = new Array();
            returnValue[0] = returnID;
            returnValue[1] = returnString;
            window.returnValue = returnValue;
            window.close();
        }
     </script>
  二级窗体的创建就此完成,这里需要注意的是客户端如何遍历选中的CheckBox,并提取CheckBox对应的用户ID和姓名。返回的值是通过window.returnValue来实现的。另外在使用ViewGrid绑定的时候,首先向页面拖放一个ViewGrid编辑其列,并拖放一个SqlDataSource控件,在Page_Load事件中将SqlDataSource的ConnectionString属性及SelectCommand属性指定即可实现。


  主模块上的代码:

    HTML控件定义:

<input id="HiddenSelectedUserID" type="hidden" runat="server"/>
<asp:TextBox ID="tbReceiveUsers" runat="server" ReadOnly="true" Width="400px">
<input id="BtnAddUser" type="button" value="添加" οnclick="javascript:GetReceiveUsers(this)"/>
    JS代码:

<script   language="javascript">
    function GetReceiveUsers(obj) {
        var sFeature = "dialogWidth:400px;dialogHeight:300px;resizable:no;scroll:yes;center:yes;help:no";
        var sUrl = "http://localhost/ssOA/ln/SelectUserEditor.aspx";
        var UserInfos = window.showModalDialog(sUrl, window, sFeature);   
      if (UserInfos != null) {
          document.getElementById("HiddenSelectedUserID").value = UserInfos[0];
          document.getElementById("tbReceiveUsers").value = UserInfos[1];   
          }   
  } 
  </script>

大功告成,这里将二级窗体返回的用户姓名列表赋予一个textbox显示,将用户Id列表保存在hidden控件中,提交给服务端。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值