为了账号安全,请及时绑定邮箱和手机立即绑定

在GridView列中动态创建几个CheckBox

标签:
Html/CSS

怎么嵌套,我的数据库中inputs字段是一个带空格的字符串

我想用gridview读出来,把info字符串变成可选的几个复选框,因为我还想选择这些复选框

--------------------------------------------------------------------------------------------------------------

分隔线上是某论坛一网友问及的问题。
要求也许是后期出现,刚开始时,只是让用户在文本框输入Info字段信息,后期才需要显示为CheckBox。因此最初设计是很重要,一稍没有想好,后面的开发,就是遇上很多问题。现在Insus.NET实现网友最初要求,把字符串改为CheckBox显示。既然改为CheckBox了,那肯定会有让用户选择,有先选择的功能,那也肯定需要存储选择的结果。因此Insus.NET分两步来做,首先是把字符串显示为CheckBox,第二步是保存选择结果。做好这个,得先准备好数据才行。


数据库层:

View Code

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:        Insus.NET-- Create date: 2013-04-22-- Description:    About save some information-- =============================================CREATE TABLE [dbo].[Information](    [Name] NVARCHAR(15) NOT NULL PRIMARY KEY,    [Info] NVARCHAR(100) NULl)GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:        Insus.NET-- Create date: 2013-04-22-- Description:     Insert some information-- =============================================INSERT INTO [dbo].[Information] ([Name],[Info]) VALUES('Name1','School city sex'),('Name2','Age city addr'),('Name3','City hobby'),('Name4','')GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author:        Insus.NET-- Create date: 2013-04-22-- Description:    Get all information-- =============================================CREATE PROCEDURE [dbo].[usp_Information_GetAll]ASSELECT [Name],[Info] FROM [dbo].[Information]GO


在ASP.NET层:
创建一个类别,Insus.NET.Information:

Information

using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Web;/// <summary>/// Summary description for Information/// </summary>namespace Insus.NET{    public class Information    {        private string _Name;        private string _Infor;        public string Name        {            get { return _Name; }            set { _Name = value; }        }        public string Infor        {            get { return _Infor; }            set { _Infor = value; }        }        BusinessBase objBusinessBase = new BusinessBase();        public Information()        {            //            // TODO: Add constructor logic here            //        }        public DataTable GetAll()        {            return objBusinessBase.GetDataToDataSet("usp_Information_GetAll").Tables[0];        }    }}


创建一个网页CheckBoxListGridViewDemo.aspx:


GridView控件,应该写上AutoGenerateColumns="false" ,因为应用了自定义列。另外使用 OnRowDataBound="GridView1_RowDataBound"事件,将用来动态为CheckBox绑定数据。

看看CheckBoxListGridViewDemo.aspx.cs:


看看效果:


第四行有问题,就是Info值为空时,它也有一个CheckBox,解决它,加个判断是否可行?


Ok,第一步完成,接下来是完成第二步,把用户选择的CheckBox存起来,还要重新显示于GridView上。
首先在数据库创建一个表,用于存储。还有两个存储过程:

View Code

-- =============================================-- Author:        Insus.NET-- Create date: 2013-04-22-- Description:    Create table save information-- =============================================CREATE TABLE [dbo].[MyInformation](    [Name] NVARCHAR(15) NOT NULL REFERENCES [dbo].[Information] ([Name]),    [MyInfo] NVARCHAR(100) NULl)GO-- =============================================-- Author:        Insus.NET-- Create date: 2013-04-22-- Description:     Save selected data-- =============================================CREATE PROCEDURE [dbo].[usp_MyInformation_IntUp](    @Name NVARCHAR(15),    @MyInfo NVARCHAR(100))ASIF EXISTS(SELECT TOP 1 1 FROM [dbo].[MyInformation] WHERE [Name] =  @Name)    UPDATE [dbo].[MyInformation] SET [MyInfo] = @MyInfo  WHERE [Name] =  @NameELSE    INSERT INTO [dbo].[MyInformation] ([Name],[MyInfo]) VALUES (@Name,@MyInfo)GO-- =============================================-- Author:        Insus.NET-- Create date: 2013-04-22-- Description:     show selected data-- =============================================CREATE PROCEDURE [dbo].[usp_Information_Selected]ASSELECT i.[Name],[Info],[MyInfo] FROM [dbo].[Information] AS iLEFT JOIN [dbo].[MyInformation] AS mi ON (i.[Name] = mi.[Name])GO

 
回到asp.net程序,打开Insus.NET.Information类别,添加一个方法:

在App_Code目录,创建另外一个类别:Insus.NET.MyInformation:


数据层与逻辑完成,接下来,我们去.aspx页面,第一字段用Label来显示,另外添加一个铵钮,用来处理存储或是更新用户选择的信息:

 

在.aspx.cs的OnCliek事件:


看到否,用户选择的CheckBox存为1,非选择的存为0 。还是演示一下吧:

 

 现在需要做的事情是,把用户选择的,显示于网页上,也就是记住用户选择的选项。需要对程序改动两个地方,第一个,就是变更获取信息的方法,在这里,你也应该想上面写好的存储过程,它就是用在这个地方。

 第二个地方,就是OnRowDataBound="GridView1_RowDataBound"事件:

 
最终的效果:

 
Insus.NET分析与解决得不够完细致与完美,只望共勉。

以下内容于2013-04-24 01:15更新补充:

如果你有时间,不防看看《在GridView列中动态创建几个CheckBox(升级篇)》。

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消