zoukankan      html  css  js  c++  java
  • 不采用SqlDataSource来存储,改用后台DataSet调用数据来前台绑定

    说明:平时开发都是用到SqlDataSource来存放数据连接字段及查询表结果,这样在连接Gridview等控件时非常好操作。

    这次用工号查询取员工姓名,解决姓名为Null问题,决定不采用SqlDataSource来存储,改用后台DataSet。

    这样就会出现如下几个问题,GridView控件的后台操作方法需要手写来处理。

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>姓名同步修改</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div id="divGV" align="center">
            <asp:GridView ID="gvStaffName" runat="server" AutoGenerateEditButton="True" 
                onrowcancelingedit="gvStaffName_RowCancelingEdit" 
                onrowediting="gvStaffName_RowEditing" 
                onrowupdating="gvStaffName_RowUpdating" Width="720px" >
            </asp:GridView>
        </div>
        <asp:Label ID="lblID" runat="server" Text=""></asp:Label>
        </form>
    </body>
    </html>

    1、定义公共参数:

     SQLHelper sqlhelper = new SQLHelper();
     string strID = "";

    2、定义页面加载:protected void Page_Load(object sender, EventArgs e)

        protected void Page_Load(object sender, EventArgs e)
        {
            Page.MaintainScrollPositionOnPostBack = true;
            gvStaffName.DataSource = sqlhelper.ExecuteQuery("select * from eLearningRecord");
            gvStaffName.DataBind();
        }

    3、加载RowEditing编辑页面并保存取到的ID号

        /// <summary>
        /// //加载RowEditing编辑页面并保存取到的ID号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvStaffName_RowEditing(object sender, GridViewEditEventArgs e)
        {
            //加载RowEditing编辑页面
            gvStaffName.EditIndex = e.NewEditIndex;
            gvStaffName.DataBind();
            //输出行号ID
            Response.Write(e.NewEditIndex + 1 + "/");
            strID = (e.NewEditIndex + 1).ToString();
            lblID.Text = strID;
        }

    4、取消操作,点击Cancel可以返回编辑页面

        /// <summary>
        /// 取消操作,点击Cancel可以返回编辑页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void gvStaffName_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gvStaffName.EditIndex = -1;
            gvStaffName.DataBind();
        }

    5、加载页面编辑操作RowUpdating

     protected void gvStaffName_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            
            DataSet dtResults = new DataSet();
            DataSet dtResults_HR = new DataSet();
            string strwebSql = "select * from eLearningRecord where id =" + lblID.Text + "";
            //dtResults.Merge(sqlhelper.RQ_getFromStaffName("select * from eLearningRecord where id =" + (e.NewEditIndex + 1).ToString() + ""));
            dtResults = dtwebResult(strTxwebsvrSql);
            string strStaffName = "";
            string strStaffName_HR = "";
            string strStaffNo = "";
            if (dtResults.Tables[0].Rows.Count > 0)
            {
                strStaffName = dtResults.Tables[0].Rows[0]["StaffName"].ToString();
                strStaffNo = dtResults.Tables[0].Rows[0]["StaffNo"].ToString();
                if (strStaffName == null || strStaffName.Length == 0)
                {
                    //dtResults.Merge(sqlhelper.RunQuery_getStaffName("SELECT [StaffNo], [ChineseName] FROM [VHMS_StaffNameSection]  where staffno =" + strStaffNo + ""));
                    string strSql = "SELECT [StaffNo], [ChineseName] FROM [VHMS_StaffNameSection]  where staffno =" + strStaffNo + "";
                    dtResults_HR = dtHRResult(strSql);
                    if (dtResults_HR.Tables[0].Rows.Count > 0)
                    {
                        strStaffName_HR = dtResults_HR.Tables[0].Rows[0]["ChineseName"].ToString();
                        string strwebUpdate = "update  eLearningRecord set StaffName = '" + strStaffName_HR + "' where StaffNo='" + strStaffNo + "'";
                        bool blUpdate = sqlhelper.bl_UpdateFromweb(strwebUpdate);
                        if (blUpdate)
                        {
                           // Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language=JavaScript>alert('姓名修改成功!');</script>");
    
                        }
                        else
                        {
                            Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language=JavaScript>alert('姓名修改失败,请重试!');</script>");
    
                        }
                    }
                }
            }
            gvStaffName.DataSource = sqlhelper.ExecuteQuery("select * from eLearningRecord");
            gvStaffName.DataBind();
    
            //输出行号对应的员工姓名 strStaffName
            Response.Write(strStaffName + "/");
    
            //输出HR表行号对应的员工姓名 strStaffName
            Response.Write(strStaffName_HR);
            //GridView点击更新后回到点击“编辑”前的样式
            gvStaffName.EditIndex = -1;
            gvStaffName.DataBind();
        }
    }

    6、定义两个连接数据库的public 方法

        /// <summary>
        /// 对HR表里的员工信息进来查找
        /// </summary>
        /// <param name="strSql"></param>
        /// <returns></returns>
        public DataSet dtHRResult(string strSql)
        {
            DataSet dtResults = new DataSet();
            dtResults.Merge(sqlhelper.RunQuery_getStaffName(strSql));
            return dtResults;
        }
    
        public DataSet dtwebResult(string strSql)
        {
            DataSet dtResults = new DataSet();
            dtResults.Merge(sqlhelper.RQ_getFromwebStaffName(strSql));
            return dtResults;
        }
  • 相关阅读:
    即将到来的Android N,将具备这些新特性
    刚挣钱的程序猿同学该怎样花钱?
    Swift函数
    MVC
    css3硬件加速
    node+mongoDB+express项目需求解释
    柯里化
    web安全
    缓存机制详解
    nodejs --- crypto实现加密(转)
  • 原文地址:https://www.cnblogs.com/iDennis/p/5702381.html
Copyright © 2011-2022 走看看