还是关于CheckBoxList。

gootey 2011-03-22 01:57:39
总是不自动给我打勾,我重新测试了好多次,都不行。大家帮我看看啊。


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>

<asp:CheckBoxList ID="men" runat="server" AutoPostBack="True"
RepeatDirection="Horizontal" RepeatLayout="Flow">
</asp:CheckBoxList>

</div>
</form>
</body>
</html>




using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class Default4 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string strcon = ConfigurationManager.ConnectionStrings["WHConn"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
conn.Open();
string strcom = "select n1 from rr";
SqlCommand sqlcom = new SqlCommand(strcom, conn);
SqlDataReader sdr1 = sqlcom.ExecuteReader();
try
{
this.men.DataSource = sdr1;
this.men.DataTextField = "n1";
this.men.DataValueField = "n1";
this.men.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sdr1.Close();
conn.Close();
conn.Dispose();
}
string str = "a1,a2,a3,a4,ds,ew,eee";
string[] items = str.Split(',');
foreach (ListItem li in this.men.Items)
{
for (int i = 0; i < items.Length; i++)
{
if (li.Text == items[i])
{
li.Selected = true;
}
}
}
}

}
}





...全文
134 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
new_fengzi 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 gootey 的回复:]
引用 17 楼 wxr0323 的回复:
你把断点打在这 if li.Text == items[i])

看看这个条件成立不成立

不成立在做响应修改。


嗯,感谢关注,你说的也对,其实一直以来这个都是不成立的。
刚才复习了一下char、varchar的概念,才知道我犯了一个极其低极的错误。
在我建表的时候,使用的是nchar(8)类型,由于我输入的字符不够,系统就自动帮我……
[/Quote]
又学到些。。。
gootey 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 new_fengzi 的回复:]
引用 16 楼 gootey 的回复:
引用 14 楼 new_fengzi 的回复:
引用 12 楼 gootey 的回复:
页面没有其它东西了呀,我把代码都发上来了的。
应该是数据库的问题,因为我改成另一个数据库表users的话,就可以自动打勾了。当然要有一些共同的数据。但是我看不出来这两个表有什么区别呀。真奇怪了。


...数据类型 问题 nchar 与 nvarchar
……
[/Quote]

呵呵,明白了。非常感谢。
gootey 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wxr0323 的回复:]
你把断点打在这 if li.Text == items[i])

看看这个条件成立不成立

不成立在做响应修改。
[/Quote]

嗯,感谢关注,你说的也对,其实一直以来这个都是不成立的。
刚才复习了一下char、varchar的概念,才知道我犯了一个极其低极的错误。
在我建表的时候,使用的是nchar(8)类型,由于我输入的字符不够,系统就自动帮我填充了一些空格,当然就跟其它实际数据对不上了,然后我再在数据库里改成varchar(8)类型,又犯了一个错误,因为空格还是存在的,只是看不见而已,当然,系统曾经提示过我。我一直在转弯弯,呵呵,感谢大家。
new_fengzi 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 gootey 的回复:]
引用 14 楼 new_fengzi 的回复:
引用 12 楼 gootey 的回复:
页面没有其它东西了呀,我把代码都发上来了的。
应该是数据库的问题,因为我改成另一个数据库表users的话,就可以自动打勾了。当然要有一些共同的数据。但是我看不出来这两个表有什么区别呀。真奇怪了。


...数据类型 问题 nchar 与 nvarchar



感谢。原来真是数据类型的问题。……
[/Quote]

哈哈 我也经常碰见这种低级错误。。。而且会折磨很长时间 道友呀
估计这个修改问题 应该是底层的东东。。菜鸟不懂
或许就好像你想把人家大楼地基给强拆了,可是楼上还有人,为了安全,是不允许拆的
子夜__ 2011-03-22
  • 打赏
  • 举报
回复

你把断点打在这 if li.Text == items[i])

看看这个条件成立不成立

不成立在做响应修改。
gootey 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 new_fengzi 的回复:]
引用 12 楼 gootey 的回复:
页面没有其它东西了呀,我把代码都发上来了的。
应该是数据库的问题,因为我改成另一个数据库表users的话,就可以自动打勾了。当然要有一些共同的数据。但是我看不出来这两个表有什么区别呀。真奇怪了。


...数据类型 问题 nchar 与 nvarchar
[/Quote]


感谢。原来真是数据类型的问题。
我开始创建表的时候,数据类型定的是默认的char,后来我直接修改成varchar,也不行,我就以为跟这个没关系了,后来就没往这方面想,但是,刚才你提示了一下,我就想,是不是不能直接修改?然后我就把这个表删除了,重新建一个,把类型定为varchar,哎,就对了!这个问题折磨了我两天了!我哭。不过,话又说回来,为什么不能直接修改呢?当然,我在修改的时候,提示了这个的:我没当回事,谁能告诉我一下,为什么这样改不行。谢谢。



new_fengzi 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 gootey 的回复:]
页面没有其它东西了呀,我把代码都发上来了的。
应该是数据库的问题,因为我改成另一个数据库表users的话,就可以自动打勾了。当然要有一些共同的数据。但是我看不出来这两个表有什么区别呀。真奇怪了。
[/Quote]

...数据类型 问题 nchar 与 nvarchar
ZhuZhuYuXiang 2011-03-22
  • 打赏
  • 举报
回复
string strcon = ConfigurationManager.ConnectionStrings["WHConn"].ConnectionString;
SqlConnection conn = new SqlConnection(strcon);
conn.Open();
string strcom = "select n1 from rr";
SqlCommand sqlcom = new SqlCommand(strcom, conn);
SqlDataReader sdr1 = sqlcom.ExecuteReader();
List<rr> list=new List<rr>();
while(sdr1.read())
{
rr rr=new rr();
rr.n1=dr["n1"].ToString();
rr.n2=dr["n2"].ToString();
...
List.add(rr);
}
try
{
this.men.DataSource = list;
this.men.DataTextField = "n1";
this.men.DataValueField = "n1";
this.men.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
sdr1.Close();
conn.Close();
conn.Dispose();
}
gootey 2011-03-22
  • 打赏
  • 举报
回复
页面没有其它东西了呀,我把代码都发上来了的。
应该是数据库的问题,因为我改成另一个数据库表users的话,就可以自动打勾了。当然要有一些共同的数据。但是我看不出来这两个表有什么区别呀。真奇怪了。
new_fengzi 2011-03-22
  • 打赏
  • 举报
回复
把你的代码放我这 木有问题 可以选中
new_fengzi 2011-03-22
  • 打赏
  • 举报
回复
不知道 你的页面还有什么东东
数据库 应该也没有问题 (不然不会有数据绑定)
或许 与IsPostBack 有关 (猜的)
gootey 2011-03-22
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 new_fengzi 的回复:]
代 码 木 有 问 题 。。。
[/Quote]

是啊,我也觉得,可是数据库也应该没有问题呀,还有其它原因吗?
new_fengzi 2011-03-22
  • 打赏
  • 举报
回复
代 码 木 有 问 题 。。。
gootey 2011-03-22
  • 打赏
  • 举报
回复
gootey 2011-03-22
  • 打赏
  • 举报
回复
首先测试下读取的数据有没有出来

数据出来了的http://www.53taobao.com/淘宝网购物/b2a558c6133934fc6eb19d1d9ca309a2.jpg

实在不行的话,自己可以先用具体的数据去判断下


我就是用了具体的数据了
string str = "a1,a2,a3,a4,ds,ew,eee";
我还专门用lable来显示了items[3]里的数据了的。
ycproc 2011-03-22
  • 打赏
  • 举报
回复
要么在传知道前台JS处理 勾选

要么在后台 遍历 操作
笑道江湖情 2011-03-22
  • 打赏
  • 举报
回复

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem Value="1" Text="CheckBox1"></asp:ListItem>
<asp:ListItem Value="2" Text="CheckBox2"></asp:ListItem>
<asp:ListItem Value="3" Text="CheckBox3"></asp:ListItem>
<asp:ListItem Value="4" Text="CheckBox4"></asp:ListItem>
<asp:ListItem Value="5" Text="CheckBox5"></asp:ListItem>
</asp:CheckBoxList>
</div>
</form>
</body>
</html>




protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string[] str = new string[] { "1", "3", "5" };
foreach (ListItem item in this.CheckBoxList1.Items)
{
for (int i = 0; i < str.Length; i++)
{
if (item.Value == str[i])
{
item.Selected = true;
}
}
}
}
}
myhope88 2011-03-22
  • 打赏
  • 举报
回复
首先测试下读取的数据有没有出来,再者就是那个判断要选中的条件有没有执行了,实在不行的话,自己可以先用具体的数据去判断下,看是否达到你想要的效果,然后再来根据数据库的数据操作
gootey 2011-03-22
  • 打赏
  • 举报
回复
沉得好快呀,哪位大侠能帮我看一下问题出在哪吗?我看来看去感觉都没有问题,但是就是达不到理想的效果。

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧