我自己是这样做的:
foreach (DataGridItem item in DataGrid1.Items)
{
if(!((CheckBox)item.Cells[1].Controls[0]).Checked)
{
WenJianQiQuan=false;
break;
}
}
但是出现非法转换类型的错误(无法强制转换为CheckBox)
foreach (DataGridItem item in DataGrid1.Items)
{
if(!((CheckBox)item.Cells[1].Controls[0]).Checked)
{
WenJianQiQuan=false;
break;
}
}
但是出现非法转换类型的错误(无法强制转换为CheckBox)
DataGrid.Item[0]是不是应该是DataGrid.Items[0]
并且这个Items[0]是不是只是第一行。
为什么要用Controls[1] Cells[1]中不就一个控件吗?索引不是从0 开始的吗?
多谢
{
lTxtValue = DataGrid1.Items(lIntCount).Cells(9).FindControl("CheckBox的名字")
}
然后再判断就OK了
for (i = 0;i< To DataGrid1.Items.Count - 1
{
lTxtValue = DataGrid1.Items[lIntCount].Cells[列数].FindControl("CheckBox的名字");
}
多谢
for (i = 0;i< To DataGrid1.Items.Count - 1;i++)
{
lTxtValue = DataGrid1.Items[lIntCount].Cells[列数].FindControl("CheckBox的名字");
}
然后再判断就OK了
<asp:CheckBox id="cb1" Runat="server"></asp:CheckBox>事件中这样:
dim str as string
dim cb as new checkbox
cb=e.item.findcontrol(cb1)
if ch.checked then
str="是"
else
str="否"
end if
{
CheckBox cbx=new CheckBox ;
cbx=(CheckBox)DataGrid1.Items[lIntCount].Cells[列数].Controls[0];
}
你看行不行
作者: zc_net 类型: 原创 发表时间: 2003-11-14 13:50:19 阅读次数: 9 发送短信
在www.csdn.net呆长了,经常看见有网友提问关于一些模板列的使用或分页.在此.我将我的一些心得写出来供大家参考(声明:我只是一个爱好者,如果写的有不对或有错的地方请原谅,当然我会尽量写好)
在datagrid控件中我们中选择文章是否推荐,如果该文章推荐,我们就选将checkbox控件上打上勾(就比如本站一些文章的'精'字图像)
在页面上增加一个datagrid控件并增加个模板列(当然你要在模板列中要有checkbox控件,并在模板列顶部放置一个button按钮,设置该按钮的commandname的命令为jing(注意是在编辑模板列Headertemplate放按钮,Itemtempaate放checkbox)好了之后我们就是在页面加载时绑定数据,当然是使用dataset来绑定数据了.Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not IsPostBack Then
Dim ds As DataSet = New DataSet()
Dim sqlsele As String = "select * from life"
adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
adocmd.Fill(ds, "life")
DataGrid1.DataSource = ds.Tables.Item(0)
DataGrid1.DataBind()
''''是否为精
viewstate("tol") = "false"
chkfind()'''''这里调用函数.主要这是这句
End If
End Sub 下面是chkfind()函数的代码,主要是用来检查是否为精(我表中有一字段,jing,整型,如果为1就代表该文章为精,如果不为0就不代表为精了)
Private Sub chkfind()
Dim i, j As Integer
For i = 0 To DataGrid1.Items.Count - 1
'i是用来显示当前总页总共有几行数据.这样就可以循环查找.判定
' j 是用来显示该行的数据在表中是第几行数据,
j = (DataGrid1.CurrentPageIndex * 10) + i
Dim ds As DataSet = New DataSet()
Dim sqlsele As String
If viewstate("tol") = "false" Then
sqlsele = "select * from life"
Else
sqlsele = "select * from life where lifetitle='" & TextBox1.Text & "'"
End If
adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
adocmd.Fill(ds, "life")
mytable = ds.Tables.Item(0)
myrow = mytable.Rows.Item(j)
Dim chk As CheckBox
chk = DataGrid1.Items(i).Cells(6).FindControl("checkbox1")
If myrow.Item(8) = 1 Then
chk.Checked = True'显示模板列的checkbox是否打上勾
Else
chk.Checked = False
End If
Next
End Sub 下面是datagrid的翻页代码及datagrid事件代码.当然每次翻页后都要重新绑定代码
Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand
If e.CommandName = "jing" Then'如果按了button按钮,就是我上面所讲的button按钮,如果还不明白请到上面看看
Dim i, j As Integer
For i = 0 To DataGrid1.Items.Count - 1
j = (DataGrid1.CurrentPageIndex * 10) + i
Dim chk As CheckBox
chk = DataGrid1.Items(i).Cells(6).FindControl("checkbox1")
Dim ds As DataSet = New DataSet()
adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
adocmd.Fill(ds, "life")
mytable = ds.Tables.Item(0)
myrow = mytable.Rows.Item(j)
mytable.GetChanges()
If chk.Checked = True Then'如果为精,更改图像
myrow.Item(8) = 1
myrow.Item(9) = "icon/jing.gif"
Else
myrow.Item(8) = 0
myrow.Item(9) = "icon/333.gif"
End If
cmd = New OleDbCommandBuilder(adocmd)
adocmd.Update(ds, "life")'更新数据
Next
Response.Redirect("adminlife.aspx")
End If
End Sub Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
Dim ds As DataSet = New DataSet()
Dim sqlsele As String
If viewstate("tol") = "false" Then
sqlsele = "select * from life "
Else
sqlsele = "select * from life where lifetitle like '%" & TextBox1.Text & "%'"
End If
adocmd = New OleDbDataAdapter(sqlsele, sqlprov)
adocmd.Fill(ds, "life")
DataGrid1.CurrentPageIndex = e.NewPageIndex
DataGrid1.DataSource = ds.Tables.Item(0).DefaultView
DataGrid1.DataBind()
chkfind()
End Sub 至此,我们已经完成了我们所想要功能.在此基础上大家都可以扩展相应的功能,谢谢看完!以上代码都已经通过调试有用的(就是本站使用的代码)
版权所有.未经本人许可.请勿转载.如需转载,请注明来源也算是对本站的支持.谢谢