zoukankan      html  css  js  c++  java
  • 小结:关于asp.net内置ajax功能的使用(scriptmanager/updatepanel)

    说明:vs实现无刷新更新repeater里面的数据(点击repeater里面的按钮)

    VS2008 无刷新 Repeater 删除功能 ScriptManager UpdatePanel

    前台代码

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RepeaterDelete.aspx.cs" Inherits="RepeaterDelete" %>
    
    <!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>Repeater无刷新的删除</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <div>
                    <table>
                        <tr>
                            <td align="right" colspan="4">
                                <asp:Button ID="btnDel" runat="server" Text="删除" OnClick="btnDel_Click" />
                            </td>
                        </tr>
                        <asp:Repeater ID="rtStudent" runat="server">
                            <ItemTemplate>
                                <tr>
                                    <td>
                                        <asp:CheckBox ID="cbDel" runat="server" />
                                        <!--主键-->
                                        <asp:HiddenField ID="hfsID" runat="server" Value='<%#Eval("sID")%>' />
                                    </td>
                                    <td>
                                        <!--姓名-->
                                        <%#Eval("sName")%>
                                    </td>
                                    <td>
                                        <!--年龄-->
                                        <%#Eval("sAge")%>
                                    </td>
                                </tr>
                            </ItemTemplate>
                        </asp:Repeater>
                    </table>
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>
        </form>
    </body>
    </html>
    

      后台代码

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    //导入
    using System.Data.SqlClient;
    
    public partial class RepeaterDelete : System.Web.UI.Page 
    {
        /// <summary>
        /// 页面加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            //是否为第一次加载
            if (!IsPostBack)
            {
                Bind();
            }
        }
        /// <summary>
        /// 数据绑定,读数据库
        /// </summary>
        private void Bind()
        {
            SqlConnection con = new SqlConnection("server=.;database=AJAXWebSite;uid=sa;pwd=;");
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            com.CommandText = "SELECT * FROM Student";
            com.CommandType = CommandType.Text;
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter();
            DataSet ds = new DataSet();
            sda.SelectCommand = com;
            sda.Fill(ds);
            rtStudent.DataSource = ds.Tables[0].DefaultView;
            rtStudent.DataBind();
            con.Close();
        }
    
        /// <summary>
        /// 单击删除按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnDel_Click(object sender, EventArgs e)
        {
            //初始化需要删除的ID集合
            string ID = "";
            //循环
            for (int i = 0; i < rtStudent.Items.Count; i++)
            {
                //查找单选框按钮
                CheckBox cb = (CheckBox)rtStudent.Items[i].FindControl("cbDel");
                //隐藏控件,值为表的主键
                HiddenField hf = (HiddenField)rtStudent.Items[i].FindControl("hfsID");
                //判断单选框是否被选择
                if (cb.Checked)
                {
                    //主键之间用逗号隔开
                    ID = ID + hf.Value + ",";
                }
            }
            //调用删除函数
            Delete(ID);
            //数据重新绑定
            Bind();
        }
    
        /// <summary>
        /// 删除表中的记录
        /// </summary>
        /// <param name="ID">需要删除的ID集合</param>
        private void Delete(string ID)
        {
            ID = ID.Substring(0, ID.Length - 1);
            SqlConnection con = new SqlConnection("server=.;database=AJAXWebSite;uid=sa;pwd=;");
            con.Open();
            SqlCommand com = new SqlCommand();
            com.Connection = con;
            com.CommandText = "DELETE FROM Student WHERE sID in (" + ID + ")";
            com.CommandType = CommandType.Text;
            com.ExecuteNonQuery();
            con.Close();
        }
    }
    

      无刷新的代码

    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
    
           </ContentTemplate>
        </asp:UpdatePanel>
        </form>
    

      

    ==================================和谐的分割线=======================================

    说明:如果是在updatepanel以外调用此方法,需要在page_load里载入,后台代码如

            protected void Page_Load(object sender, EventArgs e)
            {
                sc1.RegisterAsyncPostBackControl(btn1);  //注意,这里的sc1是scriptmanager的ID,不是updatepanel的ID。
            }
    
            protected void btn1_Click(object sender, EventArgs e)
            {
                this.lbupdate.Text = "最新时间"+DateTime.Now.ToString();
                this.up1.Update();
            }
    

      

    前台代码

        <form id="form1" runat="server">
        <asp:ScriptManager ID="sc1" runat="server"></asp:ScriptManager>
    
        <asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                    <asp:Label ID="lbupdate" Text="更新时间" runat="server" />
            </ContentTemplate>
        </asp:UpdatePanel>
    
        <asp:Button ID="btn1" runat="server" Text="换时间" onclick="btn1_Click" />
        </form>
    

      

    参考:

    VS2008 无刷新 Repeater 删除功能 ScriptManager UpdatePanel
    http://www.cnblogs.com/pwm_1987/archive/2010/05/03/1726402.html

    Repeater删除功能(CommandArgument,CommandName,ItemCommand)
    http://gaoyanaigao.blog.163.com/blog/static/16929303620125410257448/

    ScriptManager的使用
    http://blog.163.com/zhuyisheng08@126/blog/static/60078777201041493656931/

     

    技术文档
  • 相关阅读:
    20201303 2019-2020-2 《Python程序设计》实验三报告
    20201303 2020-2021-2 《Python程序设计》实验二报告
    20201303张奕博 实验一 Python程序设计入门
    2020-2021-1博客汇总
    俄罗斯方块and四则运算实践
    python对于数据库的相关实践
    20201303获奖感言与学习体会
    openssl实践
    2021-2022 2113 2114信息安全导论 第五周总结
    第九章第十章
  • 原文地址:https://www.cnblogs.com/ishibin/p/2811562.html
Copyright © 2011-2022 走看看