知识点 词汇表 联系我们
按类别浏览
内容搜索    
当前位置:WEB开发技术知识库(www.cn-web.com) .: .Net技术 .: .Net代码库 .: ASP.NET中遍历页面中的控件库以实现批量与数据库交互

ASP.NET中遍历页面中的控件库以实现批量与数据库交互


项目中表太多了,在页面中一个个拉完控件后还要一个个进行初始化、赋值、入库等,这样太累了,现总结出一通用的处理页面中的控件方法:
1.此方法根据页面中panel中的控件批量生成增加或者修改的sql语句:
 /// <summary>
    /// 自动生成SQL语句,insert或update
    /// </summary>
    /// <param name="DataPanel">控件容器,只运行Panel</param>
    /// <param name="Action">操作类型:add添加保存生成insert;edit编辑保存生成update</param>
    /// <param name="TableName">表名</param>
    /// <param name="Where">条件,修改时起作用</param>
    /// <returns>生成的SQL语句</returns>
    public static string DataBulidSqlControls(Panel DataPanel, string Action, string TableName, string Where)
    {
        string returnSql = "";
        string clunmsList = "";
        string clunmsNameList = "";
        string clunmsValuesList = "";
        string objName = "";
        string objType = "";
        string objValue = "";
        bool objBool = false;
        string mySql = "";
        switch (Action)
        {
            case "add":
                returnSql = "insert into " + TableName + " ($clunms_name_list$) values($clunms_values_list$)";
                mySql = "select top 1 * from " + TableName + "";
                break;
            case "edit":
                returnSql = "update " + TableName + " set $clunms_list$ " + Where + " ";
                mySql = "select top 1 * from " + TableName + Where + " ";
                break;
        }
        Class.SqlServer.DataSqlServer dataSqlServer = new Class.SqlServer.DataSqlServer();
        DataSet dataSet = dataSqlServer.dataSet(mySql);
        foreach (Control obj in DataPanel.Controls)
        {
            switch (obj.GetType().ToString())
            {
                case "System.Web.UI.WebControls.TextBox":
                    objName = ((System.Web.UI.WebControls.TextBox)obj).ID;
                    objName = objName.Substring(7);
                    objValue = FilterTextBox(((System.Web.UI.WebControls.TextBox)obj).Text);
                    objBool = true;
                    break;
                case "System.Web.UI.HtmlControls.HtmlInputHidden":
                    objName = ((System.Web.UI.HtmlControls.HtmlInputHidden)obj).ID;
                    objName = objName.Substring(6);
                    objValue = ((System.Web.UI.HtmlControls.HtmlInputHidden)obj).Value;
                    objBool = true;
                    break;
                case "System.Web.UI.WebControls.CheckBox":
                    objName = ((System.Web.UI.WebControls.CheckBox)obj).ID;
                    objName = objName.Substring(8);
                    objValue = ((System.Web.UI.WebControls.CheckBox)obj).Checked.ToString().ToUpper();
                    objBool = true;
                    break;
            }
            if (objBool)
            {
                if (clunmsList != "")
                    clunmsList += ",";
                if (clunmsNameList != "")
                    clunmsNameList += ",";
                if (clunmsValuesList != "")
                    clunmsValuesList += ",";
                objType = dataSet.Tables[0].Columns[objName].DataType.ToString();
                switch (objType)
                {
                    case "System.String":
                    case "System.DateTime":
                        objValue = "'" + objValue + "'";
                        break;
                    case "System.Decimal":
                    case "System.Double":
                    case "System.Int16":
                    case "System.Int32":
                    case "System.Int64":
                        if (objValue == null || objValue == "")
                            objValue = "null";
                        break;
                    case "System.Boolean":
                        if (objValue == "TRUE")
                            objValue = "1";
                        else
                            objValue = "0";
                        break;
                }
                clunmsList += objName + "=" + objValue;
                clunmsNameList += objName;
                clunmsValuesList += objValue;
                objBool = false;
            }
        }
        returnSql = returnSql.Replace("$clunms_list$", clunmsList);
        returnSql = returnSql.Replace("$clunms_name_list$", clunmsNameList);
        returnSql = returnSql.Replace("$clunms_values_list$", clunmsValuesList);
        dataSet.Dispose();
        return returnSql;
    }
2.自动将数据绑定到页面中panel里的控件
 /// <summary>
    /// 自动绑定控件
    /// </summary>
    /// <param name="dataSet">数据源</param>
    /// <param name="DataPanel">控件容器,只运行Panel</param>
    /// <param name="operateType">操作类型:display查看;select只能查看;edit编辑者有insert,update,delete;</param>
    public static void DataBulidControls(DataSet dataSet, Panel DataPanel, string operateType)
    {
        string objName = "";
        foreach (Control obj in DataPanel.Controls)
        {
            switch (operateType)
            {
                case "display":
                case "select":
                    //中心端审核
                    switch (obj.GetType().ToString())
                    {
                        case "System.Web.UI.WebControls.TextBox":
                            objName = ((System.Web.UI.WebControls.TextBox)obj).ID;
                            objName = objName.Substring(7);
                            if (dataSet.Tables[0].Columns[objName].DataType.ToString() == "System.DateTime")
                            {
                                if (dataSet.Tables[0].Rows[0][objName] != DBNull.Value)
                                    ((System.Web.UI.WebControls.TextBox)obj).Text = Convert.ToDateTime(dataSet.Tables[0].Rows[0][objName].ToString()).ToShortDateString();
                            }
                            else
                                ((System.Web.UI.WebControls.TextBox)obj).Text = dataSet.Tables[0].Rows[0][objName].ToString();
                            ((System.Web.UI.WebControls.TextBox)obj).Attributes.Remove("onClick");
                            ((System.Web.UI.WebControls.TextBox)obj).ReadOnly = true;
                            break;
                        case "System.Web.UI.HtmlControls.HtmlInputHidden":
                            objName = ((System.Web.UI.HtmlControls.HtmlInputHidden)obj).ID;
                            objName = objName.Substring(6);
                            ((System.Web.UI.HtmlControls.HtmlInputHidden)obj).Value = dataSet.Tables[0].Rows[0][objName].ToString();
                            break;
                        case "System.Web.UI.WebControls.DropDownList":
                            objName = ((System.Web.UI.WebControls.DropDownList)obj).ID;
                            ((System.Web.UI.WebControls.DropDownList)obj).Visible = false;
                            break;
                        case "System.Web.UI.WebControls.CheckBox":
                            objName = ((System.Web.UI.WebControls.CheckBox)obj).ID;
                            objName = objName.Substring(8);
                            if (dataSet.Tables[0].Rows[0][objName].ToString().ToUpper() == "TRUE" || dataSet.Tables[0].Rows[0][objName].ToString() == "1")
                                ((System.Web.UI.WebControls.CheckBox)obj).Checked = true;
                            ((System.Web.UI.WebControls.CheckBox)obj).Enabled = false;
                            break;
                    }
                    break;
                case "edit":
                    switch (obj.GetType().ToString())
                    {
                        case "System.Web.UI.WebControls.TextBox":
                            objName = ((System.Web.UI.WebControls.TextBox)obj).ID;
                            objName = objName.Substring(7);
                            if (dataSet.Tables[0].Columns[objName].DataType.ToString() == "System.DateTime")
                            {
                                if ( dataSet.Tables[0].Rows[0][objName] != DBNull.Value)
                                    ((System.Web.UI.WebControls.TextBox)obj).Text = Convert.ToDateTime(dataSet.Tables[0].Rows[0][objName].ToString()).ToShortDateString();
                            }
                            else
                            {
                                ((System.Web.UI.WebControls.TextBox)obj).Text = dataSet.Tables[0].Rows[0][objName].ToString();
                                //((System.Web.UI.WebControls.TextBox)obj).MaxLength=dataSet.Tables[0].Columns[objName].MaxLength;
                                // int temp = dataSet.Tables[0].Columns[objName].MaxLength;
                            }
                            break;
                        case "System.Web.UI.HtmlControls.HtmlInputHidden":
                            objName = ((System.Web.UI.HtmlControls.HtmlInputHidden)obj).ID;
                            objName = objName.Substring(6);
                            ((System.Web.UI.HtmlControls.HtmlInputHidden)obj).Value = dataSet.Tables[0].Rows[0][objName].ToString();
                            break;
                        case "System.Web.UI.WebControls.DropDownList":
                            objName = ((System.Web.UI.WebControls.DropDownList)obj).ID;
                            break;
                        case "System.Web.UI.WebControls.CheckBox":
                            objName = ((System.Web.UI.WebControls.CheckBox)obj).ID;
                            objName = objName.Substring(8);
                            if (dataSet.Tables[0].Rows[0][objName].ToString().ToUpper() == "TRUE" || dataSet.Tables[0].Rows[0][objName].ToString() == "1")
                                ((System.Web.UI.WebControls.CheckBox)obj).Checked = true;
                            break;
                    }
                    break;
            }
        }
    }

还有些如自动绑定dropdownlist、时间控件等,日后会陆续将代码贴出来。



对此文章打分评级

用户评论

增加评论
此文章还没有任何评论!
网站地图 - 知识词汇 - 全文检索 - 广告服务 - 帮助中心 - 联系我们
.:www.cn-web.com
网站技术开发联盟之WEB开发技术知识库
联系人:老韩(QQ:5679551)
晋ICP备07003487号