页面上拖了一个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中没有生效,请问大家这种情况怎么处理呢?
{
//前面代码省略 ////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中没有生效,请问大家这种情况怎么处理呢?
自己寫代碼綁定CheckBoxList,寫到Page_Load中你給CheckBoxList賦值的前邊就行了
個人感覺實際使用中還是自己寫代碼綁定的好
我接触C#没多久,但是为什么不用ObjectDataSource呢?有什么坏处吗?
这个不太灵活
{
//前面代码省略
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;
}
}
}
}
}
应该在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不灵活?究竟那儿不灵活??
恐怕说不灵活的,也没好好用过吧!!!!
不是全部打勾,有一个权限表,绑定CheckBoxList,是所有权限
从页面的上一页传过来一个员工ID,根据ID读取员工表的权限字段EmpLimit,根据这个字段中包含的权限来对应CheckBoxList已绑定的项打勾勾