最近项目中用到第三方控件DevExpress,在这里写下自己用到的一些体会:
本人语言表达能力不好,还望见谅。
功能:主从表,主表选中行变化时,从表相应变化,最后将修改的值存入数据库。
详细说明:
1) 表结构:
1.1) 用户表: 用户基本信息.
1.2) 角色表:角色信息.
1.3) 用户角色关系表: 用户角色关系.
2) 两个AspxGridView(主,从),当主AspxGridView选中某一行后,触发脚本事件FocusedRowChanged,gridRole.PerformCallback(s.GetFocusedRowIndex(),
然后在脚本事件中触发服务器端事件gridRole_CustomCallback,根据主AspxGridView选中行的ID,重新绑定从AspxGridView数据的checkbox状态。
3) 修改时当从AspxGridView选中行变化时,触发脚本事件gridRole_SelectionChanged,用隐藏的ASPxListBox保存选中的值,
最后在后台循环取出ASPxListBox值,插入数据库
.ASPX 代码:
<script type="text/javascript">
function gridRole_SelectionChanged(s, e) {
s.GetSelectedFieldValues("RoleId", GetSelectedFieldValuesCallback);
}
function GetSelectedFieldValuesCallback(values) {
selList.BeginUpdate();
try {
selList.ClearItems();
for (var i = 0; i < values.length; i++) {
selList.AddItem(values[i]);
}
} finally {
selList.EndUpdate();
}
}
</script>
<div>
<table>
<tr>
<td valign="top" >
<dx:ASPxGridView ID="grid" ClientInstanceName="grid" runat="server" Width="300px"
AutoGenerateColumns="false" KeyFieldName="UserId" ClientIDMode="AutoID" OnCustomColumnDisplayText="grid_CustomColumnDisplayText">
<Styles Row-Cursor="pointer">
<Row Cursor="pointer">
</Row>