在grid 外使用一个按钮保存grid 中的修改
http://localhost:51297/Examples/GridPanel/ArrayGrid/_Simple_Editable/Default.aspx
GridPannel 中如果使用 方式一绑定数据 你会发现 在你使用render 渲染数据时 渲染一条记录 但是会调用两次渲染方法 .使用方式二就不会.
对于使用方法二时 如果你的数据无法绑定上 可能是应为你的数据源是对象数组或者其他非默认类型的数据源 这时只要 加上一个对应的类型的reader 就可以如.使用render的列不能再使用编辑列 就算用了也起不了作用
<Reader >
<ext:ArrayReader ></ext:ArrayReader>
</Reader>
方式一
this.Store1.DataSource = this.Data;
this.Store1.DataBind;
方式二
this.Store1.Data = this.Data;
第一种数据源用 列表
private object Data
{
get
{
return new List<object>
{
new { company = "3m C1o", price =1, change = 1, pctChange = 0.03},
new { company = "3m Co2", price =2, change = 2, pctChange = 0.03}
};
}
}
第二种数据源 对象数组需要ArrayReader 才能被 grid 识别 否则要使用方式一绑定数据 但是方式一会出现调用两次render 方法问题 所以建议用arrayreader
private object[] Data
{
get
{
DateTime now = DateTime.Now;
return new object[]
{
new object[] { "3m Co", 1,1, 0.03, now }
};
}
}
<Reader >
<ext:ArrayReader ></ext:ArrayReader></Reader>
GridPannel 学习要点:数据绑定 分页 加载 行命令但也个命令 排序
MenuDisabled 控制表头中是否出现三角箭头的菜单(排序 控制列的显示等)
<ext:ColumnID="label" runat="server" Text="�" Fixed="true"Sortable="false"MenuDisabled="true"Flex="1"> <Renderer Fn="function (v, p, record, rowIndex) {return 'Row �'+rowIndex}"/> </ext:Column>
listeners 监听
ComponentColumn as Pin Editor 可以设置grid 中日历的格式
Infinite scrolling 可以设置一次性加载所有记录 使用滚动条模式 可以有跳到第几行的功能
compnnentcolumn overview 在一个grid中 可以使用进度条控制每行中的任务
command prepare tooolbar prepare command 可以控制grid 中的按钮状态
gridpanel -listview
ext.net gridpanel 绑定数据 构造类时别忘记加上{ get; set; } 否则数据绑定不上去
public class Employee
{
public int Id{ get; set; }
public string Name { get; set; }
public Department Department{ get; set; }
}
调用后台代码几种方法
<Proxy>
<ext:PageProxy DirectFn="App.direct.BindData">
</ext:PageProxy>
</Proxy>
<Convert Handler="return value === 'Y';" />
<Convert Fn="preBossName">
<Listeners> <CommandFn="onCommand"/> </Listeners>
有用的脚本
//DepartmentName 指的的事store中的字段名
var departmentName = function (value) {
if (!Ext.isEmpty(value)) {
return value.Name;
}
return value;
};
var fullName = function (value, metadata, record, rowIndex, colIndex, store) { return "<b>" + record.data.Department.Name + "——" + value + "</b>"; };
var preBossName = function (value, record) { return record.get('Boss').Name; };
//App.ContentPlaceHolder1_StoreCombo 有了母板页控件名和无母板页控件名是有区别的
var departmentRenderer = function (value) {
var r = App.ContentPlaceHolder1_StoreCombo.getById(value);
if (Ext.isEmpty(r)) {
return "";
}
return r.data.Name;
};