DataGrid控件可以添加"编辑"按钮,响应EditCommand事件,当处于编辑状态时,非只读列会出现TextBox控件,让用户更改其中的内容,没错吧,但是这个TextBox控件也太长了吧,如何控制它的大小阿?这样太长了会影像美观的?呵呵,望高手指点,谢谢

解决方案 »

  1.   

    <asp:DataGrid id="DataGrid1"   runat="server" AutoGenerateColumns="False">
    <Columns>
    <asp:ButtonColumn Text="Delete" CommandName="Delete"></asp:ButtonColumn>
    <asp:TemplateColumn HeaderText="Id">
    <ItemTemplate>
    <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Id") %>'></asp:Label>
    </ItemTemplate><EditItemTemplate>
    <asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Id") %>' Width ="20"></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Name">
    <ItemTemplate>
    <asp:Label runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Name") %>' Width ="20"></asp:Label>
    </ItemTemplate><EditItemTemplate>
    <asp:TextBox runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Name") %>' Width ="20"></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
      

  2.   


    <EditItemTemplate>
    <asp:TextBox Runat="server" width=100 ID="edit_Name" text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' />
    </EditItemTemplate>设置一下width属性就可以
      

  3.   

    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
            {
                 if(e.Item.ItemType==ListItemType.EditItem)
                {
                        for(int i=0;i<4;i++)((TextBox)e.Item.Cells[i].Controls[0]).Width=100;
                }
            }
      

  4.   

    if(e.Item.ItemType == ListItemType.EditItem)
    {
    TextBox tb = (TextBox)e.Item.Cells[5].Controls[0];
    tb.TextMode = TextBoxMode.MultiLine ;
    tb.ReadOnly=true;
    }
      

  5.   

    感谢各位高手的指点,我在各位的指点下总结了一下发出来,我直接调用了DataGrid的ItemDataBound事件,然后加上了以下代码:
    if(e.Item.ItemType==ListItemType.EditItem)
    {
    TextBox txt = (TextBox)e.Item.Cells[1].Controls[0];
    txt.Width = Unit.Pixel(60);

    就可以了,再次感谢各位的帮助,送分