DevExpress(4): ASPxGridView随笔
DevExpress版本14.1
(1)DateTime类型如何格式化展示?
首先要使用GridViewDataDateColumn来展示日期,然后格式化日期展示即可:)
<dx:GridViewDataDateColumn Caption="入职日期" FieldName="BeginDate" VisibleIndex="6"> <PropertiesDateEdit DisplayFormatString="yyyy-MM-dd"/> </dx:GridViewDataDateColumn>
(2)为什么在Client浏览器端获取GridView的焦点行,即使用GetFocusedRowIndex获取不到焦点行下标呢?
必须设置GridView允许行获取焦点,在GridView的定义中添加如下一段即可:)
<SettingsBehavior AllowFocusedRow="True" />
此时JS调用gridView.GetFocusedRowIndex()就可以获得正确的行号了。
(3)如何在GridView表格中添加CustomButton自定义动作,因为我不想用GridView默认的编辑、保存动作啊?
先看看效果:
查看和删除是我自定义的CustomButton,点击查看,弹出Popup窗口展示详细信息;点击删除,提示是否确定,然后删除。
添加自定义CustomButton并不复杂,代码如下:
<dx:GridViewCommandColumn Caption="操作" Width="140px" HeaderStyle-HorizontalAlign="Center" CellStyle-HorizontalAlign="Center"> <CustomButtons> <dx:GridViewCommandColumnCustomButton Text="查看" ID="btnEdit" /> <dx:GridViewCommandColumnCustomButton Text="删除" ID="btnDelete" /> </CustomButtons> <HeaderStyle HorizontalAlign="Center"/> <CellStyle HorizontalAlign="Center"/> </dx:GridViewCommandColumn>
删除事件比较好处理,服务端可通过e.VisibleIndex获取焦点行,然后grdView.GetRowValues(e.VisibleIndex, "Code").ToString();可获得单元格的值。
问题是弹出窗口的功能,CustomButton因为是Callback部分提交,所以访问不到GridView以外的控件。
解决办法是在JS中获取到当前焦点行的信息,然后调用要更新的控件的PerformCallback方法(也可以Postback到服务端)。
JS可以通过GetFocusedRowIndex获取当前焦点行,如果要获取某列的数据:
function OnGridCustmButtonClick(s, e) { grid.GetRowValues(grid.GetFocusedRowIndex(), 'Code;Name', OnGetRowValues); //'Code;Name'是GridView中列的FieldName;这里必须填两列,否则会报错 e.processOnServer = false; // Click事件不提交到服务端 } function OnGetRowValues(values) { popEdt.PerformCallback(values[0]); // 通过ASPxPopupControl的Callback将Code的值提交到服务端 popEdt.Show(); }
在服务端通过PopupWindowCallbackArgs的Parameter属性即可获得Code的值。