DataGrid执行编辑命令后,出现TextBox,要怎么才能控制TextBox的长度

解决方案 »

  1.   

    将要执行编辑的列转换成模板列,然后就可以设置模板列中textbox的宽度了
      

  2.   

    在DataGrid上点右键选编辑模板->选中你的模板名称(包含TextBox的那个。)
    在EditTemplate荐中选中TextBox,设置长度就可以了。
      

  3.   

    <asp:BoundColumn HeaderText="city" SortExpression="city" DataField="city" width="2"/>
      

  4.   

    private void dg1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    //if(e.Item.ItemType=ListItemType.EditItem)
    {
    for(int i=0;i<e.Item.Cells.Count;i++)
    {
    if(e.Item.Cells[i].Controls.Count>0)
    {
    try
    {
    TextBox tb=(TextBox)e.Item.Cells[i].Controls[0];
    tb.Width=100;

    }
    catch
    {
      
    }
    }
    }
    }
    }
      

  5.   

    如果你使用模板列,那么只需要限定每列的宽度,并将里面的控件设置为100%即可。
    如果不是,那么,你必须在编辑事件的代码里面,寻找当前行里面的各个输入框,重新设定它们的宽度
    this.DataGrid1.EditItem = e.Item.ItemIndex;
    ...//重新绑定
    TextBox box1 = (TextBox)e.Item[e.Item.ItemIndex].Cells[0].Controls[0];
    box1.Width = Unit.Pixel(100);
    类似如此,即可设定宽度。不过,这种方式较为烦琐并且,控件也许不一定在每一列的第一个控件。所以,建议还是使用模板列。
      

  6.   

    分析器错误 
    说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。 分析器错误信息: 类型“System.Web.UI.WebControls.BoundColumn”不具有名为“width”的属性。源错误<asp:BoundColumn DataField="SM" HeaderText="书名" width="20px"></asp:BoundColumn>————————————————————————————————————
    自己先试了再回帖,不知道没关系,就是别误导大家
      

  7.   

    建议用zhqs1000(子鱼)的方法,我试过了,用模板列很麻烦,每列都要单独设置tigerwen01(小虎)(编程艺术化) 和 hchxxzx(NET?摸到一点门槛)提供的方法我试过,行不通,报的还是最基本的错误!