欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-07-09 22:16:22
  public class ModelHander { /// /// 通过表单动态的填充实体类 /// ///...

 

public class ModelHander
{
    /// 
    /// 通过表单动态的填充实体类
    /// 
    /// 
    ///
    ///
    /// 
    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;
    }

    /// 
    /// 设置控件值
    /// Control:TextField,TextArea,Label,DateField,MultiCombo,ComboBox,Radio,Checkbox,NumberField
    /// 
    /// 
    ///
    ///当前页面,从中寻找控件
    ///动作类型(EDIT、QUERY)
    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;
    }

    /// 
    /// 创建GridPanel的列及Store
    /// 
    public static void CreateGrdStore(T t)
    {
        Type type = t.GetType();
        PropertyInfo[] pi = type.GetProperties();
        string ControlType;
    }
}
给对应页面控件进行赋值

 

 

   ModelHander.SetDataOfControl(model, this.Page, "QUERY");
获得其mode值

 

 

   ModelHander.SetModelToForm(ref model, Request.Form, this.Page);