浅析C#绑定ComBobox控件的解决方法

一般的C# 绑定,都是将ID进行递归,然后再帮顶。这里将解决普通绑定中会出现的问题。希望对大家有所帮助。

公司主营业务:成都做网站、成都网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出龙胜免费做网站回馈大家。

在C/S模式下,在这样一种情况下:

ID    

NAME

ParentID

1aa0
2bb1
3cc2

从以上图标中可看出关系:ID:1是父节点,ID:2是ID:1的子节点,而ID:3又是ID:2的子节点。这种关系其实并不复杂,但是你要通过一个Combobox来检索出ID:1节点下的所有节点,就必须使用递归了。因此,问题也就出现了,用普遍的方式来C# 绑定,会使界面上数量显示成[ Control:name ] ,具体的笔者不再重复,如果你看到这篇文章,那么你应该会明白我的意思。好,下面来看解决方案吧!

写一个ListItem类:

 
 
 
  1. public class ListItem   
  2.     {   
  3.         private string id = string.Empty;   
  4.         private string name = string.Empty;   
  5.         public ListItem(string sid, string sname)   
  6.         {   
  7.             id = sid;   
  8.             name = sname;   
  9.         }   
  10.         public override string ToString()   
  11.         {   
  12.             return this.name;   
  13.         }   
  14.         public string ID   
  15.         {   
  16.             get   
  17.             {   
  18.                 return this.id;   
  19.             }   
  20.             set   
  21.             {   
  22.                 this.id = value;   
  23.             }   
  24.         }   
  25.         public string Name   
  26.         {   
  27.             get   
  28.             {   
  29.                 return this.name;   
  30.             }   
  31.             set   
  32.             {   
  33.                 this.name = value;   
  34.             }   
  35.         }   
  36.     } 

C# 绑定方法:

 
 
 
  1. //定义一个方法,传两个参数;   
  2.       // 注意:参数得看你的具体需要,笔下这个方法仅作参考;   
  3.       void init(ComboBox cb, int parentId)   
  4.       {   
  5.           string commandText = String.Format("Select * from  tb_SystemCategory where parentID= {0}",parentId);   
  6.  
  7.           DataSet ds = globalBLL.GetList(commandText);   
  8.           if (ds != null)   
  9.           {   
  10.               foreach (DataRow dr in ds.Tables[0].Rows)   
  11.               {   
  12.                   Global.ListItem item = new LMInvoicingCS.Global.ListItem(dr["id"].ToString(),dr["name"].ToString());   
  13.                   cb.Items.Add(item);   
  14.  
  15.                   init(cb, int.Parse(dr["id"].ToString()));   
  16.               }   
  17.               ds = null;   
  18.           }   
  19.       } 

基本上到这里就可以了,以下是我在“添加/修改”时作的一些设置。

; 添加的时候,绑定完控件,显示的应该是第一条数据,因此:

cboCategory.SelectedItem = cboCategory.Items[0];

;修改一条数据,绑定完控件,显示给客户的绑定项应该是该编辑项的category,因此:

 
 
 
  1. // 定义一个方法;    
  2. // 这个方法的效率不高,属于老土型,如果有哪位朋友有更好的方案,欢迎交流,谢谢!    
  3.                 private int com(string value)   
  4.                 {   
  5.                     int index = -1;   
  6.                     for (int i = 0; i < rca.cboCategory.Items.Count; i++)   
  7.                     {   
  8.                         if (((ListItem)rca.cboCategory.Items[i]).ID == value)   
  9.                         {   
  10.                             index = i;   
  11.                         }   
  12.                     }   
  13.                     return index;   
  14.                 }   
  15.  
  16. // 调用方法   
  17. int indext = com(this.treeViewer.SelectedNode.Tag.ToString());   
  18. cboCategory.SelectedItem = cboCategory.Items[indext]; 

本文名称:浅析C#绑定ComBobox控件的解决方法
浏览地址:http://www.mswzjz.cn/qtweb/news42/254392.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能