ext.net 数据和表单值的交互(直接上封装的代码,看注释,不多解释)

public class ModelHander<T>
{
    /// <summary>
    /// 通过表单动态的填充实体类
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="t"></param>
    /// <param name="form"></param>
    /// <returns></returns>
    public static int SetModelToForm(ref T t, NameValueCollection form, Page page)
    {
        int va = 0;
        Type type = t.GetType();//获取类型
        PropertyInfo[] pi = type.GetProperties();//获取属性集合
        Type fieldType;
        string ControlType;
        foreach (PropertyInfo p in pi)
        {
            //if (form[p.Name] != null && form[p.Name] != "") //影响RadioGroup
            {
                try
                {
                    fieldType = p.PropertyType;
                    ControlType = page.FindControl(p.Name).GetType().Name;
                    if (fieldType != null && fieldType.Name == "Nullable`1")//判断是否为可空类型
                    {
                        fieldType = Nullable.GetUnderlyingType(p.PropertyType);
                    }

                    if (ControlType == "ComboBox") //ComBox单独处理获取Value值
                    {
                        p.SetValue(t, Convert.ChangeType(((ComboBox)page.FindControl(p.Name)).SelectedItem.Value, fieldType), null);
                    }
                    else if (ControlType == "RadioGroup")
                    {
                        RadioGroup radioGroup = page.FindControl(p.Name) as RadioGroup;//此处没有被执行 待解决
                        for (int i = 0; i < radioGroup.Items.Count; i++)
                        {
                            if (radioGroup.Items[i].Checked == true)
                            {
                                p.SetValue(t, Convert.ChangeType(radioGroup.Items[i].InputValue, fieldType), null);
                                break;
                            }
                        }
                    }
                    else if (ControlType == "Checkbox")
                    {
                        if (((Checkbox)page.FindControl(p.Name)).Checked)
                        {
                            p.SetValue(t, Convert.ChangeType("1", fieldType), null);
                        }
                        else
                        {
                            p.SetValue(t, Convert.ChangeType("0", fieldType), null);
                        }
                    }
                    else if (ControlType == "Label") //ComBox单独处理获取Value值
                    {
                        p.SetValue(t, Convert.ChangeType(((Label)page.FindControl(p.Name)).Text, fieldType), null);
                    }
                    else if (ControlType == "HtmlEditor") //ComBox单独处理获取Value值
                    {
                        p.SetValue(t, Convert.ChangeType(((HtmlEditor)page.FindControl(p.Name)).Text, fieldType), null);
                    }
                    else if (ControlType == "DateField") //DateField单独处理获取Value值
                    {
                        p.SetValue(t, Convert.ChangeType(((DateField)page.FindControl(p.Name)).Text, fieldType), null);
                    }
                    else
                    {
                        p.SetValue(t, Convert.ChangeType(form[p.Name], fieldType), null);//为属性赋值,并转换键值的类型为该属性的类型
                    }
                    va++;//记录赋值成功的属性数
                }
                catch
                {
                }
            }
        }
        return va;
    }

    /// <summary>
    /// 设置控件值
    /// Control:TextField,TextArea,Label,DateField,MultiCombo,ComboBox,Radio,Checkbox,NumberField
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="t"></param>
    /// <param name="page">当前页面,从中寻找控件</param>
    /// <param name="actType">动作类型(EDIT、QUERY)</param>
    public static void SetDataOfControl(T t, Page page, string actType)
    {
        if (t==null)
        {
            return;
        }
        Type type = t.GetType();
        PropertyInfo[] pi = type.GetProperties();
        string ControlType;
        object obj;
        //string[] MultiItems;
        actType = actType.ToUpper();//动作类型
        foreach (PropertyInfo p in pi)
        {
            if (p.Name != "ID")
            {
                try
                {
                    obj = p.GetValue(t, null);
                    ControlType = page.FindControl(p.Name).GetType().Name;

                    switch (ControlType)
                    {
                        case "TextField":
                            TextField textField = ((TextField)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                textField.SetValue(obj);
                            }
                            if (actType == "QUERY")//查询时控件置灰,只读
                            {
                                //textField.Enabled = false;
                                textField.ReadOnly = true;
                                //textField.Cls = "textDisabled";
                                //textField.Disabled = true;
                            }
                            break;
                        case "TextArea":
                            TextArea textArea = ((TextArea)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                textArea.Text = obj.ToString();
                            }
                            if (actType == "QUERY")
                            {
                                //textArea.Enabled = false;
                                textArea.ReadOnly = true;
                            }
                            break;
                        case "Label":
                            Label label = ((Label)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                label.Text = obj.ToString();
                            }
                            break;
                        case "DateField":
                            DateField dateField = ((DateField)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                dateField.Text = obj.ToString();
                            }
                            if (actType == "QUERY")//查询时控件置灰,只读
                            {
                                //dateField.Enabled = false;
                                dateField.ReadOnly = true;
                            }
                            break;
                        case "MultiCombo":
                            MultiCombo multiCombo = ((MultiCombo)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                //MultiItems=obj.ToString().Split(',');
                                //foreach (string item in MultiItems)
                                //{
                                //    multiCombo.SelectItem(item);
                                multiCombo.Value = obj.ToString();
                                //}
                            }
                            if (actType == "QUERY")
                            {
                                multiCombo.ReadOnly = true;
                                //multiCombo.Disabled = true;
                            }
                            break;
                        case "ComboBox":
                            ComboBox comboBox = ((ComboBox)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                comboBox.SelectedItem.Value = obj.ToString();
                            }
                            if (actType == "QUERY")
                            {
                                comboBox.ReadOnly = true;
                                //comboBox.Disabled = true;
                            }
                            break;
                        case "RadioGroup":
                            RadioGroup radioGroup = page.FindControl(p.Name) as RadioGroup;
                            for (int i = 0; i < radioGroup.Items.Count; i++)
                            {
                                if (obj != null && radioGroup.Items[i].InputValue == obj.ToString())
                                {
                                    radioGroup.Items[i].Checked = true;
                                }
                            }
                            if (actType == "QUERY")
                            {
                                //radioGroup.Enabled = false;
                                //radioGroup.ReadOnly = true;
                                radioGroup.Disabled = true;
                            }
                            break;
                        case "Checkbox":
                            Checkbox checkbox = ((Checkbox)page.FindControl(p.Name));

                            if (obj != null && obj.ToString() == "1")
                            {
                                checkbox.Checked = true;
                            }
                            else
                            {
                                checkbox.Checked = false;
                            }

                            if (actType == "QUERY")
                            {
                                checkbox.Enabled = false;
                                //checkbox.ReadOnly = true;
                            }
                            break;
                        case "Hidden":
                            Hidden hidden = ((Hidden)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                hidden.Text = obj.ToString();
                            }
                            if (actType == "QUERY")//查询时控件置灰,只读
                            {
                                //textField.Enabled = false;
                                hidden.ReadOnly = true;
                                //textField.Cls = "textDisabled";
                                //textField.Disabled = true;
                            }
                            break;
                        case "NumberField":
                            NumberField numberField = ((NumberField)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                numberField.Text = obj.ToString();
                            }
                            if (actType == "QUERY")//查询时控件置灰,只读
                            {
                                //textField.Enabled = false;
                                numberField.ReadOnly = true;
                            }
                            break;
                        case "TriggerField":
                            TriggerField triggerField = ((TriggerField)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                triggerField.Text = obj.ToString();
                            }
                            if (actType == "QUERY")//查询时控件置灰,只读
                            {
                                //textField.Enabled = false;
                                triggerField.ReadOnly = true;
                            }
                            break;
                        case "HtmlEditor":
                            HtmlEditor HtmlEditor = ((HtmlEditor)page.FindControl(p.Name));
                            if (obj != null)
                            {
                                HtmlEditor.Text = obj.ToString();
                            }
                            if (actType == "QUERY")//查询时控件置灰,只读
                            {
                                //textField.Enabled = false;
                                HtmlEditor.ReadOnly = true;
                                //textField.Cls = "textDisabled";
                                //textField.Disabled = true;
                            }
                            break;
                        //case "GridPanel":
                        //    GridPanel gridPanel = ((GridPanel)page.FindControl(p.Name));
                        //    //if (obj != null)
                        //    //{
                        //    //    gridPanel.Text = obj.ToString();
                        //    //}
                        //    if (actType == "QUERY")//查询时控件置灰,只读
                        //    {
                        //        GridPanelHelper.SetColumnsEditable(gridPanel.ColumnModel, false);
                        //    }
                        //    else
                        //    {
                        //        GridPanelHelper.SetColumnsEditable(gridPanel.ColumnModel, true);
                        //    }
                        //    break;
                        default:
                            break;
                    }
                }
                catch
                {
                }
            }
        }//end foreach
        //置灰设置人员按钮
        if (page.FindControl("AskManBtn") != null && actType == "QUERY")
        {
            Button button = page.FindControl("AskManBtn") as Button;
            button.Disabled = true;
        }
        if (page.FindControl("gridAppFile") != null && actType == "QUERY")
        {
            FileUploadField fileUpload = page.FindControl("f2") as FileUploadField;
            fileUpload.Disabled = true;

            GridPanel gridPanel = page.FindControl("gridAppFile") as GridPanel;
            gridPanel.ColumnModel.Columns[2].Hidden = true;
        }
        if (page.FindControl("BtnAdd") != null && actType == "QUERY")
        {
            Button btn = page.FindControl("BtnAdd") as Button;
            btn.Disabled = true;
        }
        if (page.FindControl("BtnDel") != null && actType == "QUERY")
        {
            Button btn = page.FindControl("BtnDel") as Button;
            btn.Disabled = true;
        }
    }
    public static DataTable GetUserByID(int userid)
    {
        string sql = "select UName,g_group.GName as UClass,UWork  from u_user left join ug_User_Group " +
                    " on u_user.UId=ug_User_Group.uId " +
                    " left join g_group on g_group.GId=ug_User_Group.gId " +
                    " where u_user.UId='" + userid + "'";
        DataTable dt = Sunway.DBUtility.DbHelperSQL.ExecuteDataSet(CommandType.Text, sql, null).Tables[0];
        return dt;
    }

    /// <summary>
    /// 创建GridPanel的列及Store
    /// </summary>
    public static void CreateGrdStore(T t)
    {
        Type type = t.GetType();
        PropertyInfo[] pi = type.GetProperties();
        string ControlType;
    }
}

给对应页面控件进行赋值

   ModelHander<db_BackApply>.SetDataOfControl(model, this.Page, "QUERY");

获得其mode值

   ModelHander<db_BackApply>.SetModelToForm(ref model, Request.Form, this.Page);
时间: 2024-10-22 11:32:03

ext.net 数据和表单值的交互(直接上封装的代码,看注释,不多解释)的相关文章

ASP.NET实现类似Excel的数据透视表

代码: /Files/zhuqil/Pivot.zip 数据透视表提供的数据三维视图效果,在Microsoft Excel能创建数据透视表,但是,它并不会总是很方便使用Excel.您可能希望在Web应用程序中创建一个数据透视报表.创建一个简单的数据透视表可能是一件非常复杂的任务.所以,我打算不但为你提供一个非常有用的工具创建简单和高级的数据透视表,而且为你移除一些笼罩他们的神秘面纱. 目标是:我们想要有能力将datatable中的二维的数据转换成三维视图. 在大多数情况下,你会从数据库的查询数据

jQuery ajax - serialize() 方法-输出序列化表单值

定义和用法 serialize() 方法通过序列化表单值,创建 URL 编码文本字符串. 您可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身. 序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中. 语法 $(selector).serialize() <html> <head> <script type="text/javascript" src="/jquery/jquery.js"

Jquery 获取表单值如input,select等方法

1 if($("input[name=item][value='val']").attr('checked')==true) //判断是否已经打勾 name即控件name属性,value即控件value属性 可以不指定属性值,因一组checkbox的value值都会保存其在数据库中对应的id,最好写成如下方式 if($("input[name=row_checkbox]").attr('checked')==true) { alert("j");

用VBA创建数据透视表

作者:iamlaosong 有个拣货报表,想先从货品信息中分离出颜色信息,再根据储位.名称和颜色创建一个数据透视表,由于数据是变化的(结构不变,记录数会变),每次重新创建很麻烦,因此想做个工具,用VBA分离颜色并创建数据透视表,供其他人使用.分离颜色的代码很好写,创建数据透视表的代码自然采用录制宏的方法最简单,代码出来后修改一下就行了.工具界面如下: 拣货单的内容如下,需要分离SKU信息中的颜色: 工具的代码如下: '分离信息 Sub separate_information() On Erro

Oracle 数据库 数据文件 表 表空间 用户的关系

这涉及到数据库的物理结构和逻辑结构. 首先,你需要明白的一点是:数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理存储. 每一个Oracle数据库有一个或多个物理的数据文件(data file).一个数据库的数据文件包含全部数据库数据.逻辑数据库结构(如表.索引等)的数据物理地存储在数据库的数据文件中.数据文件通常为*.dbf格式,例如:userCIMS.dbf.数据文件有下列特征:

Sql语句批量更新数据(多表关联)

最近在项目中遇到一个问题,原来设计的功能是不需要一个特定的字段值depid的,但是新的功能需要根据depid来展现,于是出现了这样一个问题,新增加的数据都有正确的depid,而原来的大量的数据就没有depid或者说depid不是想要的,面临要批量更新原来数据depid的问题. 更新涉及到三个表base_cooperativeGroup,base_groupuser,base_user. 列出表结构: 1.base_cooperativeGroup 2.base_groupuser 3.base_

动态图表制作——数据透视表+函数

大家都知道Excel的图表功能是简单而又强大的,使用Excel能做出很漂亮的商业图表,但是通常我们只做的图表都是静态的--一个图表只能显示一到二个数据维度的情况. 在Ecxel使用过程中,难免需要根据现有数据,制作可视化更高的更能说明问题的图表,在图表制作时,常规的往往只是利用已有的数据进行,如果一张工作表中,数据繁多,并希望每个数据(字段)都有图表出现,我们遵循常规方法制作n多个图表? 如果需要演示的数据有多组维度,比如不同年份不同部门的费用--,或者纵轴系列过多会导致在图形上观察数据的不便,

excel2013做数据透视表

excel2013做数据透视表 Excel最新版更新到2013,相比2003.2007和2010,2013的excel界面方面有一定变化,在操作方面也有一定的便捷性.那么如何使用excel2013做一些简单的数据汇总.透视,以及在数据透视表中进行计算.展现等呢,请大家跟着我一起来一起操作吧. 1 首先打开你要用来做数据透视表的excel文件,如图我自己弄了一个样本示例文件,预先选择好你要做数据透视的区域,如我的示例文件我选择A1:F24区域,记得要连带表头一起选择. 2 然后点击最顶端的菜单"插

根据数据生成表单

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>根据数据生成表单</title> <script> //定义一个数组承接里面的对象内容 //提取数组中的元素(这个元素是对象) //用元素对象type属性判断这个对象是什么类型的标签 //再有对象拿到属性值给标签附上属性 //老套路 window.onload = function()