web开发,自动给页面控件复值

这个是本人在做b/s开发的时候用的一段代码,使用的时候需要控件的id和数据库的列字段值对应,希望能够对需要的人有点帮助欢迎大家拍砖。
/// <summary>
        
/// 给页面数据复值
        
/// </summary>
        
/// <param name="PageContral">要复值的页面</param>
        
/// <param name="table">数据源DataTable</param>
        public static void SetDataToForm(System.Web.UI.Page PageContral,DataTable table)
        {
            
int ColCount=table.Columns.Count;
            
object ColText;
            
foreach(Control ct in PageContral.Controls)
            {
                
if(ct.HasControls())
                {
                    SetDataToForm(PageContral,table,ct.Controls,ColCount);
                }
                
else
                {
                    
if(ct.ID!=null)
                    {
                        
for(int i=0;i<ColCount;i++)
                        {
                            
if(ct.ID==table.Columns[i].ColumnName)
                            {
                                ColText
=table.Rows[0][i];
                                
if(ct is jw.Calendar)
                                {
                                    
if(Microsoft.VisualBasic.Information.IsDate(ColText))
                                    {
                                        DateTime Time
=Convert.ToDateTime(ColText);
                                        
if(Time.Year<=1900)
                                            ((Label)ct).Text
="";
                                        
else
                                            ((Label)ct).Text
=Time.ToShortDateString();
                                    }
                                    
else
                                        ((Label)ct).Text
=ColText.ToString();
                                }
                                
else if(ct is TextBox)
                                {
                                    ((TextBox)ct).Text
=ColText.ToString();
                                }
                                
else if(ct is DropDownList)
                                {
                                    ((DropDownList)ct).SelectedValue
=ColText.ToString();
                                }
                                
else if(ct is Label)
                                {
                                    
if(Microsoft.VisualBasic.Information.IsDate(ColText))
                                    {
                                        DateTime Time
=Convert.ToDateTime(ColText);
                                        
if(Time.Year<=1900)
                                            ((Label)ct).Text
="";
                                        
else
                                            ((Label)ct).Text
=Time.ToShortDateString();
                                    }
                                    
else
                                        ((Label)ct).Text
=ColText.ToString();
                                }
                                
else if(ct is CheckBox)
                                {
                                    ((CheckBox)ct).Checked
=(bool)ColText;
                                }
                            }
                        }
                    }
                }
            }
        }
        
private static void SetDataToForm(System.Web.UI.Page PageContral,DataTable table,ControlCollection ct,int ColCount)
        {
            
object ColText;
            
foreach(Control _ct in ct)
            {
                
if(_ct.HasControls())
                {
                    SetDataToForm(PageContral,table,_ct.Controls,ColCount);
                }
                
else
                {
                    
if(_ct.ID!=null)
                    {
                        
for(int i=0;i<ColCount;i++)
                        {
                            
if(_ct.ID==table.Columns[i].ColumnName)
                            {
                                ColText
=table.Rows[0][i];
                                
if(_ct is jw.Calendar)
                                {
                                    
if(Microsoft.VisualBasic.Information.IsDate(ColText))
                                    {
                                        DateTime Time
=Convert.ToDateTime(ColText);
                                        
if(Time.Year<=1900)
                                            ((TextBox)_ct).Text
="";
                                        
else
                                            ((TextBox)_ct).Text
=Time.ToShortDateString();
                                    }
                                    
else
                                        ((TextBox)_ct).Text
=ColText.ToString();
                                }
                                
else if(_ct is TextBox)
                                {
                                    ((TextBox)_ct).Text
=ColText.ToString();
                                }
                                
else if(_ct is DropDownList)
                                {
                                    ((DropDownList)_ct).SelectedValue
=ColText.ToString();
                                }
                                
else if(_ct is Label)
                                {
                                    
if(Microsoft.VisualBasic.Information.IsDate(ColText))
                                    {
                                        DateTime Time
=Convert.ToDateTime(ColText);
                                        
if(Time.Year<=1900)
                                            ((Label)_ct).Text
="";
                                        
else
                                            ((Label)_ct).Text
=Time.ToShortDateString();
                                    }
                                    
else
                                        ((Label)_ct).Text
=ColText.ToString();
                                }
                                
else if(_ct is CheckBox)
                                {
                                    ((CheckBox)_ct).Checked
=(bool)ColText;
                                }
                            }
                        }
                    }
                }
            }
        }
        
#endregion
Tag标签: asp.net
posted @ 2008-05-25 16:36 wangwang0522 阅读(1596) 评论(17)  编辑 收藏 网摘 所属分类: asp.net

  回复  引用  查看    
#1楼 2008-05-25 16:56 | BoyLee      

  回复  引用  查看    
#2楼 2008-05-25 17:14 | SZW      
赋值
  回复  引用  查看    
#3楼 2008-05-25 17:24 | 私家侦探      
和我的大同小异,
我是用page的findcontrol的方法来找出控件并对它赋值
我总共实现了增删改获取model四个方法,都是自动化取值和赋值的,我把input的id和字段名匹配起来了,这样就方便了,但是耦合性太强了,做个小项目或许可以这样的,因为以前我是菜鸟,现在我早就放弃这种做法了,所以我劝lz也放弃巴呵呵
抄一小段给你看:
--------------------------------
object obj = _page.Form.FindControl(fields[i]);
//System.Web.HttpContext.Current.Response.Write(obj.GetType().Name + "<br/>");
switch (obj.GetType().Name)
{
case "HtmlInputText":
((HtmlInputText)obj).Value = cvalue;
break;
//case "HtmlInputHidden":
// ((HtmlInputHidden)obj).Value = dr[fieldsdb[i]].ToString();
// break;
case "HtmlInputCheckBox":

if (dr[fieldsdb[i]].GetType().Name == "Boolean")
if (Convert.ToBoolean(cvalue))
((HtmlInputCheckBox)obj).Checked = true;
else
((HtmlInputCheckBox)obj).Checked = false;
break;

case "HtmlSelect":

HtmlSelect sel = (HtmlSelect)obj;
int icount = sel.Items.Count;

//System.Web.HttpContext.Current.Response.Write(cvalue);
if (cvalue.Contains(","))//可多选的listbox情况
{
string[] values = cvalue.Split(new char[] { ',' });
for (i = 0; i < values.Length; i++)
{
for (int j = 0; j < icount; j++)
{
if (sel.Items[j].Value == values[i])
{
//System.Web.HttpContext.Current.Response.Write(j+"++");
sel.Items[j].Selected = true;
break;
}
}
}
}


  回复  引用  查看    
#4楼 2008-05-25 17:33 | 金色海洋(jyk)      
我也正要写一个类似的东东,过两个小时左右就可以写好了。
  回复  引用  查看    
#5楼 [楼主]2008-05-25 17:57 | wangwang0522      
谢谢二楼的错字纠正,
感谢三楼的指点。

  回复  引用  查看    
#6楼 [楼主]2008-05-25 18:25 | wangwang0522      
三楼的现在用什么方法呀,可以给粘贴点代码指点一下吗?
  回复  引用    
#7楼 2008-05-25 18:43 | LeadNT [未注册用户]
对效率表示怀疑……
  回复  引用  查看    
#8楼 2008-05-25 19:24 | 金色海洋(jyk)      
  回复  引用  查看    
#9楼 2008-05-25 20:18 | GuoYong.Che      
有必要这样做吗,看不出任何理由
  回复  引用  查看    
#10楼 [楼主]2008-05-25 20:44 | wangwang0522      
这个也就适合软件开发,对网站开发肯定不适合的,节省开发成本吧。
  回复  引用    
#11楼 2008-05-25 23:51 | 陈小稳 [未注册用户]
我们做了一个查询方案保存的东西,为了实现通用,我采用json保存值状态,需要记录控件id、恢复值的方法与参数,在保存的时候需要指定特定控件的保存为json的方法和普通控件的id,这样就能够实现复杂的控件,比如我们有个用来选择显示列的控件其实是由一对复选下拉框实现的,用简单的保存value的方法显然不适用。因此为了通用,这样获取比较好,把id、value、处理函数组合起来就差不多无所不能了。
  回复  引用  查看    
#12楼 2008-05-26 09:02 | jowo      
看到这么多if else都有点怕怕;呵呵
  回复  引用  查看    
#13楼 2008-05-26 10:32 | 李华顺      
完全木没看明白
  回复  引用  查看    
#14楼 2008-05-26 10:53 | chegan      
很早的时候msdn介绍过一段代码,可以参考一下
http://www.cnblogs.com/chegan/archive/2004/11/10/62293.html
  回复  引用    
#15楼 2008-05-26 11:25 | pixysoft [未注册用户]
Contral...拼写错误

很多命名不规范

需要修正态度
  回复  引用  查看    
#16楼 [楼主]2008-05-26 13:43 | wangwang0522      
@pixysoft
不好意思,哪里错了呀,这是从代码里复制粘贴的。这个是06年的时候写的,现在软件还在应用。

  回复  引用  查看    
#17楼 2008-05-30 16:46 | amingo      
什么垃圾

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-05-25 16:45 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: