各位高人,小的我在这里又要麻烦大家了。
我在datagrid中加了个模板列,加入了checkbox,用于管理员来设置浏览者可以看到哪些内容。数据库中和checkbox相对应的字段是allow_display,为布尔型。我现在想在改变checkbox的checked值的同时修改数据库中相应记录的allow_display值。为了简化问题,我在datagrid外面加了个label,用于获取改变后的checkbox的checked值。为此我写了如下代码。但这段代码只有第一条记录可以正常取值。其它的记录的checkbox值改变时只能取第一条的checked值。请高手帮忙修正!==============================================================
private void dtgArchive_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item)
{
CheckBox chk=(CheckBox)e.Item.FindControl("ckbDisplay");
chk.CheckedChanged+=new EventHandler(chk_CheckedChanged);
}
} // 得到指定DataGrid的Items中的的CheckBox对象
private CheckBox GetItemCheckBox(DataGrid grd)
{ CheckBox chk = null;
foreach (DataGridItem i in grd.Controls[0].Controls)
{
if(i.ItemType == ListItemType.Item)
{
chk = (CheckBox)i.FindControl("ckbDisplay");
break;
}
} return chk; } private void chk_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = this.GetItemCheckBox(this.dtgArchive);
this.lblTest.Text=chk.Checked.ToString();
}
我在datagrid中加了个模板列,加入了checkbox,用于管理员来设置浏览者可以看到哪些内容。数据库中和checkbox相对应的字段是allow_display,为布尔型。我现在想在改变checkbox的checked值的同时修改数据库中相应记录的allow_display值。为了简化问题,我在datagrid外面加了个label,用于获取改变后的checkbox的checked值。为此我写了如下代码。但这段代码只有第一条记录可以正常取值。其它的记录的checkbox值改变时只能取第一条的checked值。请高手帮忙修正!==============================================================
private void dtgArchive_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType==ListItemType.Item)
{
CheckBox chk=(CheckBox)e.Item.FindControl("ckbDisplay");
chk.CheckedChanged+=new EventHandler(chk_CheckedChanged);
}
} // 得到指定DataGrid的Items中的的CheckBox对象
private CheckBox GetItemCheckBox(DataGrid grd)
{ CheckBox chk = null;
foreach (DataGridItem i in grd.Controls[0].Controls)
{
if(i.ItemType == ListItemType.Item)
{
chk = (CheckBox)i.FindControl("ckbDisplay");
break;
}
} return chk; } private void chk_CheckedChanged(object sender, EventArgs e)
{
CheckBox chk = this.GetItemCheckBox(this.dtgArchive);
this.lblTest.Text=chk.Checked.ToString();
}
解决方案 »
- nhibernate [could not execute query]异常求助
- 2003的csproj转换错误该怎么办,貌似用新版的打开,多出现这个问题
- aspxPivotGrid 的右键菜单“表达式编辑器” 如何显示
- FileUpload.PostedFile.SaveAs()
- 怎样得到gridview点中列的值?
- 用datalist做购物车.合计问题
- 问个评论分页的问题
- 大家来讨论一下用WebSerivce现三层结构还是用语言写DLL组件注删来实现好一些?
- 生成xml文件无对法其进行写入??
- 我想要做一个信息输入表单,谁能给我原代码啊?详情请看内容!!!!高手们帮帮我啦!!!!
- 动态绑定DATAGRID中CHECKBOX附值的问题
- 网站登录难题
http://www.ccw.com.cn/htm/center/prog/02_2_26_4.asp
http://www.microsoft.com/china/community/Column/23.mspx
foreach (DataGridItem i in grd.Controls[0].Controls)
{
chk = (CheckBox)i.FindControl("ckbDisplay");
if(chk.Checked==true)
{
更新操作
}
}
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e){
if( e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType==ListItemType.SelectedItem || e.Item.ItemType == ListItemType.AlternatingItem)
{
CheckBox chk=(CheckBox)e.Item.FindControl("cb"); chk.CheckedChanged += new EventHandler(chk_CheckedChanged); }
}2、
private void chk_CheckedChanged(object sender, EventArgs e){
CheckBox chk = (CheckBox)sender;
DataGridItem item = (DataGridItem)chk.NamingContainer;//使用该引用来获取cb的命名容器
string id = item.Cells[0].Text;//比如取出DataGrid的第一列id值
//.....如更新数据库等
}
改为:
if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlertItem)