ext:grid分页,列宽度自动填满grid宽度

本文介绍如何使用ExtJS创建一个包含动态加载数据的网格面板,并实现分页、自适应列宽等功能。通过示例代码展示了如何配置ColumnModel、Store及GridPanel组件。

 var cm = new Ext.grid.ColumnModel([{
      header : '编号',
      dataIndex : 'id'
     }, {
      header : '名称',
      dataIndex : 'name'
     }, {
      header : '描述',
      dataIndex : 'descn'
     }]);
   var store = new Ext.data.Store({
      proxy : new Ext.data.HttpProxy({
         url : 'data.jsp'
        }),
      reader : new Ext.data.JsonReader({
         totalProperty : 'totalProperty',
         root : 'root'
        }, [{
           name : 'id'
          }, {
           name : 'name'
          }, {
           name : 'descn'
          }])

     });
   store.load({
      params : {
       start : 0,
       limit : 20
      }
     });

   var grid = new Ext.grid.GridPanel({
      renderTo : Ext.getBody(),
      ds : store,
      cm : cm,
      autoHeight : true, //这样grid才能全部显示行,不用滚动
      viewConfig : {
       forceFit : true //让grid的列自动填满grid的整个宽度,不用一列一列的设定宽度。
      },
      bbar : new Ext.PagingToolbar({
         pageSize : 20,
         store : store,
         displayInfo : true,
         displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
         emptyMsg : "没有记录"
        })
     });

还有一个属性,设置表格中某一列的宽度自适应,填充grid剩余的宽度。

cm中要设置id:

var cm = new Ext.grid.ColumnModel([{
      header : '编号',
      dataIndex : 'id'
     }, {
      header : '名称',
      dataIndex : 'name'
     }, {
      id : 'description',
      header : '描述',
      dataIndex : 'descn'
     }]);

然后在grid的初始配置中加上:
autoExpandColumn : 'description',  //先在cm中给列加上id,然后设置grid要自动适应的列的id

 

jsp代码:

<%
 String start = request.getParameter("start");
 String limit = request.getParameter("limit");
 try {
  int index = Integer.parseInt(start);
  int pageSize = Integer.parseInt(limit);
  String json = "{totalProperty:100,root:[";
  for (int i = index; i < pageSize + index; i++) {
   json += "{id:" + i + ",name:'name" + i + "',descn:'descn"
   + i + "'}";
   if (i != pageSize + index - 1) {
    json += ",";
   }
  }
  json += "]}";
  response.getWriter().write(json);
 } catch (Exception ex) {
 }
%>

为什么EQUIPMENT PART NAME的grid没有填充下面的页面 而是只填充了一半 <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid Grid.Row="0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Text="Position Name" Grid.Row="0" Grid.Column="0" Margin="3,3,7,3" Style="{StaticResource LabelTextBlockStyle}"></TextBlock> <controls:MAgCombo Name="cmbPositionName" IsEditable="True" Grid.Column="1" MaskUnexistedInput="True" QueryDataCommand="{Binding Path=QueryEquipmentPartNameListCommand}" IsOptional="True" TargetFilePath="{Binding Path=EquipmentPartNameTargetFilePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding Path=EquipmentPartNameSource,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" TextEmptyCommand="{Binding Path=EquipmentPartNameTextEmptyCommand}"> <controls:MAgCombo.SelectedText> <Binding Path="EquipmentPartName" Mode="TwoWay" UpdateSourceTrigger="LostFocus"> <Binding.ValidationRules> <m:IUIValidator MethodName="EquipmentPartNameTryValidation"></m:IUIValidator> </Binding.ValidationRules> </Binding> </controls:MAgCombo.SelectedText> </controls:MAgCombo> <TextBlock Text="Equipment Name" Grid.Row="1" Grid.Column="2" Margin="3,3,7,3" Style="{StaticResource LabelTextBlockStyle}"></TextBlock> <controls:MAgCombo Name="cmbEquipmentPartName" IsEditable="True" Grid.Row="1" Grid.Column="3" MaskUnexistedInput="True" QueryDataCommand="{Binding Path=QueryEquipmentPartNameListCommand}" IsOptional="True" TargetFilePath="{Binding Path=EquipmentPartNameTargetFilePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding Path=EquipmentPartNameSource,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" TextEmptyCommand="{Binding Path=EquipmentPartNameTextEmptyCommand}"> <controls:MAgCombo.SelectedText> <Binding Path="EquipmentPartName" Mode="TwoWay" UpdateSourceTrigger="LostFocus"> <Binding.ValidationRules> <m:IUIValidator MethodName="EquipmentPartNameTryValidation"></m:IUIValidator> </Binding.ValidationRules> </Binding> </controls:MAgCombo.SelectedText> </controls:MAgCombo> <Button Grid.Column="5" Content="QUERY" Width="120" Margin="5,3,3,3" Command="{Binding QueryCommand}"></Button> </Grid> <Grid Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="auto"></ColumnDefinition> </Grid.ColumnDefinitions> <GroupBox Header="[EQUIPMENT PART NAME]" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="7" Margin="3"> <controls:LocalHeaderDataGrid Margin="0,0,6,6" SelectedItem="{Binding Path=SelectedEquipmentPartListRow, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectionChangedCommand="{Binding Path=SelectedEquipmentPartChangedCommand}" SelectedIndex="{Binding Path= SelectedEquipmentPartIndex,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" TargetFilePath="{Binding Path= EquipmentPartTargetFilePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Stretch" CanUserAddRows="False" ColumnWidth="*" SelectionMode="Single" > </controls:LocalHeaderDataGrid> <!--<controls:LocalHeaderDataGrid Name="dgrdEquipmentPartName" ColumnWidth="*" SelectionMode="Extended" IsReadOnly="True" AutoGenerateColumns="False" CursorIndex="{Binding Path=CursorIndex,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" ItemsSource="{Binding Path=EquipmentPartNameInfoList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectionChangedCommand="{Binding Path=SelectedEquipmentPartNameListRowChangedCommand}" TargetFilePath="{Binding Path=EquipmentPartNameTargetFilePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedIndexes="{Binding Path= SelectedEquipmentPartNameIndexes,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" MultiSelectedItems="{Binding Path=SelectedEquipmentPartNameItemsRow, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding Path=SelectedEquipmentPartNameListRow, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> --> <!--<controls:LocalHeaderDataGrid.Columns > <DataGridTextColumn Header="PHOTO RESIST NAME" Binding="{Binding EquipmentPartName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="PHOTO RESIST NUMBER" Binding="{Binding EquipmentPartNumber,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="WARNING QTY" Binding="{Binding WarningQty,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="VISCOSTY" Binding="{Binding Viscosty,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="PRODUCTION FLAG" Binding="{Binding ProductionFlag,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="DEFROST HOUR" Binding="{Binding DefrostHour,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> <DataGridTextColumn Header="INSTALLED VALID DAY" Binding="{Binding InstalledValidDay,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> </controls:LocalHeaderDataGrid.Columns>--> <!-- </controls:LocalHeaderDataGrid>--> </GroupBox> </Grid> <!-- <Grid Grid.Row="2"> --> <!-- <Grid.ColumnDefinitions> --> <!-- <ColumnDefinition Width="Auto"></ColumnDefinition> --> <!-- <ColumnDefinition Width="*"></ColumnDefinition> --> <!-- <ColumnDefinition Width="Auto"></ColumnDefinition> --> <!-- <ColumnDefinition Width="*"></ColumnDefinition> --> <!-- <ColumnDefinition Width="Auto"></ColumnDefinition> --> <!-- <ColumnDefinition Width="*"></ColumnDefinition> --> <!-- <ColumnDefinition Width="auto"></ColumnDefinition> --> <!-- </Grid.ColumnDefinitions> --> <!-- <GroupBox Header="[STOCK]" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="7" Margin="3"> --> <!-- --> <!-- <controls:LocalHeaderDataGrid Name="dgrdEquipmentPartName" --> <!-- ColumnWidth="*" --> <!-- SelectionMode="Single" --> <!-- IsReadOnly="True" --> <!-- AutoGenerateColumns="False" --> <!-- CursorIndex="{Binding Path=CursorIndex,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" --> <!-- ItemsSource="{Binding Path=StockInfoList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" --> <!-- SelectionChangedCommand="{Binding Path=SelectedStockListRowChangedCommand}" --> <!-- TargetFilePath="{Binding Path=StockTargetFilePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" --> <!-- --> <!-- SelectedIndexes="{Binding Path= StockIndexes,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" --> <!-- MultiSelectedItems="{Binding Path=SelectedStockItemsRow, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" --> <!-- SelectedItem="{Binding Path=SelectedStockListRow, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> --> <!-- --> <!-- --> <!-- <controls:LocalHeaderDataGrid.Columns > --> <!-- <DataGridTextColumn Header="STATUS" Binding="{Binding Status,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> --> <!-- <DataGridTextColumn Header="COUNT" Binding="{Binding Count,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> --> <!-- </controls:LocalHeaderDataGrid.Columns> --> <!-- --> <!-- </controls:LocalHeaderDataGrid> --> <!-- </GroupBox> --> <!-- </Grid> --> <Grid Grid.Row="3" Grid.ColumnSpan="7"> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="Auto"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <TextBlock Grid.Row="0" Grid.Column="0" Text="TOTAL COUNT" Margin="3,3,7,3" Style ="{StaticResource LabelTextBlockStyle}"></TextBlock> <TextBlock Style="{StaticResource ValueTextBlockStyle}" Grid.Row="0" Grid.Column="1" Background="LightGray" Text="{Binding Path=TotalCount,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ></TextBlock> </Grid> <Grid Grid.Row="4" Grid.ColumnSpan="7"> <Grid.RowDefinitions> <RowDefinition Height="Auto"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*"></ColumnDefinition> </Grid.ColumnDefinitions> <Button Grid.Row="0" Content="CREATE" Margin="5,3,3,3" Command="{Binding CreateCommand}" IsEnabled="{Binding Path=IsCreateEnabled, Mode=TwoWay}"></Button> <Button Grid.Row="0" Grid.Column="1" Content="DELETE" Margin="5,3,3,3" Command="{Binding DeleteCommand}" IsEnabled="{Binding Path=IsDeleteEnabled, Mode=TwoWay}"></Button> <Button Grid.Row="0" Grid.Column="2" Content="MODIFY" Margin="5,3,3,3" Command="{Binding ModifyCommand}" IsEnabled="{Binding Path=IsModifyEnabled, Mode=TwoWay}"></Button> </Grid> </Grid>
最新发布
10-23
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值