ASP.NET(C#)项目开发webformDataGrid中使用了“编辑”按钮列和绑定列。
那么当点击“编辑”按钮的时候,该行的单元格会变成TextBox,默认情况下TextBox的长度是固定的。
请问在这样的情况下,有没有办法改变TextBox的长度???请高手指点,谢谢!学习,关注……

解决方案 »

  1.   

    if(e.Item.ItemType==ListItemType.EditItem)
                {
                           for(int i=0;i<4;i++)((TextBox)e.Item.Cells[i].Controls[0]).Width=100;
                }itemdataboud里面
      

  2.   

    他不是有 Width 属性么! 直接改就可以呀!
      

  3.   

    对要编辑的列使用模版列,然后放上TextBox,直接设置Width就可以了。
      

  4.   

    to: LoveCherry(论成败,人生豪迈;大不了,重头再来!^_^)大哥,在执行你的代码的时候,出现下面的错误,请看看:
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 
    异常详细信息: System.InvalidCastException: 指定的转换无效。
    源错误: 
    行 225: if(e.Item.ItemType==ListItemType.EditItem)
    行 226: {
    行 227: ((TextBox)e.Item.Cells[4].Controls[0]).Width=10;
    行 228: }
    to:luck0235(天是刮风的,地是长草的,我是证明人类伟大的。) 
    使用模板列我也知道到的,我现在想要知道如果使用绑定列能不能设置TextBox的长度?学习,关注……
     
      

  5.   

    private void DataGrid2_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.EditItem)
    {
    //循环所有单元
    for(int i=0; i<e.Item.Cells.Count-1;i++)
    {
    //单元内是否有控件
    if(e.Item.Cells[i].Controls.Count>0)
    {
    //如果是TextBox控件
    if(e.Item.Cells[i].Controls[0].GetType().ToString()=="System.Web.UI.WebControls.TextBox")
    {
    TextBox tb = (TextBox)e.Item.Cells[i].Controls[0];
    tb.Width=80;
    }
    }
    }
    }
    }
      

  6.   

    ItemDataBound事件中改private void myDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        if ((e.Item.ItemType == ListItemType.EditItem) && (e.Item.Cells.Count > 0))
    {
        for (int i = 0; i < e.Item.Cells.Count; i++) 
            { 
                if (e.Item.Cells[i].Controls.Count > 0)
                            ((TextBox)e.Item.Cells[i].Controls[0]).Width = myDataGrid.Columns[i].ItemStyle.Width;
            } 
        }
    }
      

  7.   

    private void DataGrid2_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.EditItem)
    {
    //循环所有单元
    for(int i=0; i<e.Item.Cells.Count-1;i++)
    {
    //单元内是否有控件
    if(e.Item.Cells[i].Controls.Count>0)
    {
    //如果是TextBox控件
    if(e.Item.Cells[i].Controls[0].GetType().ToString()=="System.Web.UI.WebControls.TextBox")
    {
    TextBox tb = (TextBox)e.Item.Cells[i].Controls[0];
    tb.Width=80;
    //这里改为TextBox tb = (TextBox)e.Item.Cells[i].Controls[0];tb.Width=Unit.Parse("80");
    }
    }
    }
    }
    }
      

  8.   

    還是這個好,可以根據資料來變化長度.
    private void myDataGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
        if ((e.Item.ItemType == ListItemType.EditItem) && (e.Item.Cells.Count > 0))
    {
        for (int i = 0; i < e.Item.Cells.Count; i++) 
            { 
                if (e.Item.Cells[i].Controls.Count > 0)
                            ((TextBox)e.Item.Cells[i].Controls[0]).Width = myDataGrid.Columns[i].ItemStyle.Width;
            } 
        }
    }
      

  9.   

    是可以控制输入框的宽度,但不赞成这样做,因为它显示出来的全部都是单行输入框,我想,作一个编辑,不仅只是输入框吧.
    所以我们一般用模板列来实现,更灵活,控制更方便.
    你可到如下地址去看一个完整的示例.
    http://www.cnblogs.com/hchxxzx/archives/2005/06.html