我的datagrid中,各列都是动态添加的,但是点击editcommandcolumn后,其它的绑定列都变得非常宽,整个datagrid超出了页面的宽度。请问大家,在点击editcommandcolumn的编辑按钮后,如何控制各个绑定列的宽度?

解决方案 »

  1.   

    是因为textbox的宽度导致了该列宽度的增加,
    解决办法.在ItemDataBound事件中.
    if(e.Item.ItemType = ListItemType.EditItem)
    {
        TextBox txt = (TextBox)e.Item.FindControl("TextBox1");
        txt.Width = Unit.Parse("80px");
    }
      

  2.   

    幕白兄,你好。我的程序使用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,请问大家这是为什么?我怎样才能在编辑的时候,改绑定列的宽度,而不是在更新的时候改绑定列的宽度?
      

  3.   

    幕白兄,我按你说的做了,如下:
    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
      

  4.   

    搞定了,
    我把代码改成这样就可以了
    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分,送上