关于CheckBoxList无法选中的问题

guoruixing 2009-03-17 08:26:48
页面上拖了一个CheckBoxList控件和ObjectDataSource,CheckBoxList通过ObjectDataSource从数据库的权限列表中把所有权限读取出来,但是我在Page_Load中写入下面代码,怎么都选不中

protected void Page_Load(object sender, EventArgs e)
{
//前面代码省略

////CheckBoxList控件勾选,读取权限
string[] strTemp = employee[0].EmpLimits.Split('|');
foreach (string str in strTemp)
{
for (int i = 0; i < cblLimits.Items.Count; i++)
{
if (this.cblLimits.Items[i].Value.ToString() == str)
{
this.cblLimits.Items[i].Selected = true;
}
}
}
}


但是我再页面添加一个Button,然后把代码移动到Button_Click中去,运行后,点击按钮,就可以选中,真诡异!
我分析应该是程序执行时,先执行了Page_Load中的代码然后才去绑定ObjectDataSource的,所以代码放Page_Load中没有生效,请问大家这种情况怎么处理呢?
...全文
248 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
koukoujiayi 2009-03-17
  • 打赏
  • 举报
回复
看楼主的意思好象就是将CheckBoxLis全部打勾,
应该在CheckBoxLis的PreRender事件中进行:
不太清楚楼主的代码,以下是将CheckBoxLis1全部打勾

protected void CheckBoxList1_PreRender(object sender, EventArgs e)
{
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
CheckBoxList1.Items[i].Selected = true;
}
}

另外用ObjectDataSource我的感觉非常好,特别是配合强类型的dataset,一个字"爽";
常常会看到说ObjectDataSource不灵活?究竟那儿不灵活??
恐怕说不灵活的,也没好好用过吧!!!!
yitogong 2009-03-17
  • 打赏
  • 举报
回复


protected void Page_Load(object sender, EventArgs e)
{
//前面代码省略
if(!Page.IsPostBack)
{
////CheckBoxList控件勾选,读取权限
string[] strTemp = employee[0].EmpLimits.Split('|');
foreach (string str in strTemp)
{
for (int i = 0; i < cblLimits.Items.Count; i++)
{
if (this.cblLimits.Items[i].Value.ToString() == str)
{
this.cblLimits.Items[i].Selected = true;
}
}
}
}
}

guoruixing 2009-03-17
  • 打赏
  • 举报
回复
汗,没人能帮忙解决一下嘛?
LarkBoy 2009-03-17
  • 打赏
  • 举报
回复
我也不用ObjectDataSource,
这个不太灵活
guoruixing 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 bsetsail 的回复:]
你在項目開發中還用ObjectDataSource嗎?
個人感覺實際使用中還是自己寫代碼綁定的好
[/Quote]

我接触C#没多久,但是为什么不用ObjectDataSource呢?有什么坏处吗?
bsetsail 2009-03-17
  • 打赏
  • 举报
回复
你在項目開發中還用ObjectDataSource嗎?
個人感覺實際使用中還是自己寫代碼綁定的好
guoruixing 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bsetsail 的回复:]
那就不要用ObjectDataSource
自己寫代碼綁定CheckBoxList,寫到Page_Load中你給CheckBoxList賦值的前邊就行了
[/Quote]
实在不行只能这样了,但是我觉得应该有解决办法吧?
bsetsail 2009-03-17
  • 打赏
  • 举报
回复
那就不要用ObjectDataSource
自己寫代碼綁定CheckBoxList,寫到Page_Load中你給CheckBoxList賦值的前邊就行了
guoruixing 2009-03-17
  • 打赏
  • 举报
回复
ObjectDataSource从数据库中的权限表取出所有权限,让CheckBoxList控件显示,然后页面打开后,通过代码从员工表中取出所选员工的权限,再让CheckBoxList选中该员工所拥有的权限,但是ObjectDataSource绑定不是手写代码的,结果Page_Load先执行了,我晕
guoruixing 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 koukoujiayi 的回复:]
看楼主的意思好象就是将CheckBoxLis全部打勾,
应该在CheckBoxLis的PreRender事件中进行:
[/Quote]

不是全部打勾,有一个权限表,绑定CheckBoxList,是所有权限
从页面的上一页传过来一个员工ID,根据ID读取员工表的权限字段EmpLimit,根据这个字段中包含的权限来对应CheckBoxList已绑定的项打勾勾

62,268

社区成员

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

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

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

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