转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
一种快速存取选择条目的方案(Asp.Net+C#)         ★★★★

一种快速存取选择条目的方案(Asp.Net+C#)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1230 更新时间:2009/4/23 10:49:56
ItemArray(itemIDArray,itemRecord);

 

一点说明:上面这段代码就是读取条目信息和个人设置进行相应的处理的,SelectItemArray是个私有方法,代码如下:

 

#region 取得选中项目记录集

/// <summary>

/// 取得选中项目记录集

/// </summary>

/// <param name="tempItemIDarray">所有项目记录集</param>

/// <param name="tempItemRecord">项目选择信息</param>

/// <returns>选中项目记录集</returns>

private string[] SelectItemArray(string[] tempItemIDarray,int tempItemRecord)

{

       //项目的ID数组元素个数

       int itemIDarrayCount=tempItemIDarray.Length;

       //将整形记录转化成二进制

       string itemRecordString = Convert.ToString(tempItemRecord,2);

       //存储的选择信息位个数

       int itemRecordStringCount=itemRecordString.Length;

       //需要补0的个数

       int addZeroCount=itemIDarrayCount-itemRecordStringCount;

       //开始往高位补0

       for(int i=0;i<addZeroCount;i++)

       {

              itemRecordString="0"+itemRecordString;

       }

      

       //选中ID字符串

       string selectItemString=null;

       //开始匹配选中项

       int count=itemRecordString.Length;

       for(int j=0;j<count;j++)

       {

              if(Int32.Parse(itemRecordString.Substring(j,1))==1)

              {

                     selectItemString+=","+tempItemIDarray[j];

              }

       }

       //剃除第一个","

       selectItemString=selectItemString.Substring(1,selectItemString.Length-1);

       char[] dot = new char[]{'''',''''};

       //返回选中的项目ID数组

       return  selectItemString.Split(dot);

}

#endregion

一点说明:

如果你还没有看明白上面的代码,那么现在就看我来解释给你听。这里的方案其实是利用了二进制数据位的“0”“1”来标识是否选中某条目的,如果选中即为“1”,每一个条目都对应一个二进制位,如果Item中有五条数据,那么全是“11111”,这样的二进制数据,如果我们想选中第一条、第二条和第五条数据,那么对应的二进制代码表示为“10101”,然后我们把这个二进制数据转化成十进制数据就是:16+0+4+0+1=21,如此种种我们可以通过转换记录各种组合的记录。这里要注意的是新增条目的问题,如果现在条目变成了七条怎么办?不用担心,变成了七条,那么就有七个位“1111111”,那么这个时候我原来的选中三条数据是不要变化的,这增加的两个位是增加在高位上的,即现在的存储表示变成了“0010101”,就是:0+0+16+0+4+0+1=21,数值是没有变化的。一般情况下我们是添加条目,很少有减少条目的情况,如果要减少条目,肯定要另外写程序来重置ItemRecord的值的。

那么用户重新选择条目后,如何重置ItemRecord值呢?下面听我慢慢道来,像这种多选的条目一般都会由CheckBoxList绑定出来进行选择操作的,我们也就是对这个对象的元素选中情况进行处理,代码片段如下:

int itemCount=CheckBoxList_Item.Items.Count;

for(int i=0;i<itemCount;i++)

{

    if(CheckBoxList_Item.Items[i].Selected)

    {

           itemSelect=itemSelect+"1";

    }

    else

    {

           itemSelect=itemSelect+"0";

    }

}

int itemRecord=Convert.ToInt32(itemSelect, 2);

 

一点说明:首先获得条目的个数,然后做循环,判断是否选中,如果选中则相应的位值为“1”,否则为“0”,组合出来二进制字符串然后再进行个进制转换,然后再入库就一切搞定了。

是不是很方便呢?不仅方便这种存储效率是非常高的,如果你有几百个条目要选择,这种方案便是一个不错的选择,不过,你如果真搞几百个条目让别人选,除非是被逼无奈的应付考试,否则一定会遭遇强烈的鄙视的,谁有耐心去做这个选择嘛,哈哈!

 不要急,再给一个提醒看看,千万不要把顺序搞错了,绑定CheckBoxList的时候,按照DESC的顺序来绑定元素列表,不然,吼吼……

 本篇没有提供完整代码,如果需要完整代码或者技术探讨的机会,可以通过下面的联系方式找偶,MSN:yubo@x263.net,拒绝闲聊。

上一页  [1] [2] 


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台