幕白兄,你好。我的程序使用vb.net写的,你给的C#代码我搞得不是很清楚。 我的onEditCommand触发的代码如下: Sub editCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs) Dim txtEdit As TextBox equipmentDTG.EditItemIndex = e.Item.ItemIndex txtedit = CType(e.Item.Cells(6).Controls(0), TextBox) txtEdit.Width = Unit.Pixel(20) dtgDataBind() End Sub 但是这样的话会报错,我看了一下此时e.Item.Cells(6).Controls.count值为0当我把onUpdateCommand触发的代码改为如下时, Sub updateCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs) Dim txtEdit As TextBox txtedit = CType(e.Item.Cells(6).Controls(0), TextBox) txtEdit.Width = Unit.Pixel(20) end sub 我datagrid的第5例的宽度变窄了,此时e.Item.Cells(6).Controls.count为1,请问大家这是为什么?我怎样才能在编辑的时候,改绑定列的宽度,而不是在更新的时候改绑定列的宽度?
幕白兄,我按你说的做了,如下: Private Sub equipmentDTG_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles equipmentDTG.ItemDataBound If e.Item.ItemType = ListItemType.EditItem Then Dim txtEdit As TextBox txtEdit = e.Item.FindControl("textbox1") txtEdit.Width = Unit.Pixel(20) End If End Sub但是总是报错:Object reference not set to an instance of an object
搞定了, 我把代码改成这样就可以了 Private Sub equipmentDTG_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles equipmentDTG.ItemDataBound If e.Item.ItemType = ListItemType.EditItem Then Dim txtEdit As TextBox txtEdit = CType(e.Item.Cells(6).Controls(0), TextBox) txtEdit.Width = Unit.Pixel(20) End If End Sub问题暂时解决了,以后还要多读书,读好书,把里面的机制搞清楚。 谢谢幕白兄,50分,送上
解决办法.在ItemDataBound事件中.
if(e.Item.ItemType = ListItemType.EditItem)
{
TextBox txt = (TextBox)e.Item.FindControl("TextBox1");
txt.Width = Unit.Parse("80px");
}
我的onEditCommand触发的代码如下:
Sub editCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim txtEdit As TextBox
equipmentDTG.EditItemIndex = e.Item.ItemIndex
txtedit = CType(e.Item.Cells(6).Controls(0), TextBox)
txtEdit.Width = Unit.Pixel(20)
dtgDataBind() End Sub
但是这样的话会报错,我看了一下此时e.Item.Cells(6).Controls.count值为0当我把onUpdateCommand触发的代码改为如下时,
Sub updateCommand(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim txtEdit As TextBox
txtedit = CType(e.Item.Cells(6).Controls(0), TextBox)
txtEdit.Width = Unit.Pixel(20)
end sub
我datagrid的第5例的宽度变窄了,此时e.Item.Cells(6).Controls.count为1,请问大家这是为什么?我怎样才能在编辑的时候,改绑定列的宽度,而不是在更新的时候改绑定列的宽度?
Private Sub equipmentDTG_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles equipmentDTG.ItemDataBound If e.Item.ItemType = ListItemType.EditItem Then
Dim txtEdit As TextBox
txtEdit = e.Item.FindControl("textbox1")
txtEdit.Width = Unit.Pixel(20)
End If
End Sub但是总是报错:Object reference not set to an instance of an object
我把代码改成这样就可以了
Private Sub equipmentDTG_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles equipmentDTG.ItemDataBound If e.Item.ItemType = ListItemType.EditItem Then
Dim txtEdit As TextBox
txtEdit = CType(e.Item.Cells(6).Controls(0), TextBox)
txtEdit.Width = Unit.Pixel(20)
End If
End Sub问题暂时解决了,以后还要多读书,读好书,把里面的机制搞清楚。
谢谢幕白兄,50分,送上