我点dategrid里面编辑按钮时,dategrid长度就回改
怎么样保持长度不变,谢谢指点!!1

解决方案 »

  1.   

    这是因为你没有对DataGrid的每一项设定好宽度。
      

  2.   

    将DataGrid中每一列中的控件设定一个固定长度即可.
      

  3.   

    <ASP:DataGrid id="MyDataGridzc" runat="server"
                                     Width="400" 
                                     BackColor="#ccccff" BorderColor="black"
                             ShowFooter="false" 
                                     CellPadding="3"
                                     CellSpacing="0"
                                     Font-Name="Verdana" 
                                     Font-Size="8pt" 
                                     HeaderStyle-BackColor="#aaaadd"
                                     OnDeleteCommand="MyDataGridzc_Delete"
                                     OnEditCommand="MyDataGridzc_Edit" 
                                     OnCancelCommand="MyDataGridzc_Cancel" 
                                     OnUpdateCommand="MyDataGridzc_Update"
                                     AutoGenerateColumns="false" 
                                  >
                                    <Columns>
                                        <asp:ButtonColumn  Text="删除" CommandName="Delete" />
                                <asp:EditCommandColumn HeaderText="操作" EditText="修改" CancelText="取消" UpdateText="确认" ItemStyle-Wrap="false" />
                                        <asp:BoundColumn HeaderText="编码" DataField="编码" ReadOnly="True" ItemStyle-Wrap="false" />
                                        <asp:BoundColumn HeaderText="名称" DataField="名称" ReadOnly="True" ItemStyle-Wrap="false" />
                                <asp:TemplateColumn HeaderText="数量" SortExpression="数量">
                                  <ItemTemplate>
                            <asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "数量") %>' ID="Label1" NAME="Label1"/>
                          </ItemTemplate>
                          <EditItemTemplate>
                    <nobr>
    //******** width="40" height="18" ******
                    <asp:TextBox runat="server"  width="40" height="18"  id="edit_zcsl" Text='<%#DataBinder.Eval(Container.DataItem, "数量") %>'/>
                          </EditItemTemplate>
                                </asp:TemplateColumn>
                                        <asp:BoundColumn HeaderText="单位" DataField="单位" ReadOnly="True" ItemStyle-Wrap="false"/>
                                      </Columns>
                              <HeaderStyle BackColor="black" ForeColor="white" HorizontalAlign="center" Height="30" />
                                      <AlternatingItemStyle BackColor="lightgray" />
                                  </asp:DataGrid>
      

  4.   

    怎么不行?
    如果你设置的DataGrid宽度不够的话,在修改时可以出现宽度修改的问题。但是如果把文本框的大小设定好,应该没有问题。
      

  5.   

    我找上面各位说的都修改过了,但是在编辑状态下,textbox文本域宽度还是变的很宽,有没有谁有具体的例子????
      

  6.   

    后台可以
     Private Sub DataGrid_ItemCreated(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles Datagrid.ItemCreated
        Select Case e.Item.ItemType           Case ListItemType.EditItem  
               CType(e.Item.Cells(6).Controls(0), TextBox).Width = System.Web.UI.WebControls.Unit.Pixel(40)     
        End Select 
    end sub
    宽度多少在pixel里定吧
      

  7.   

    DataGrid的Width不设
    在columns属性中,为每一列设它的width值。
      

  8.   

    改成模板列,编辑模板列,想怎么改就怎么改啊。NND,好像只有这样了
      

  9.   

    这样就可以了:  绝对没问题
    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
            {
                 if(e.Item.ItemType==ListItemType.EditItem)
                {
                        for(int i=0;i<=5;i++)((TextBox)e.Item.Cells[i].Controls[0]).Width=60;
                }
            }