这该死的ASPxDropDownEdit,老是不能很好的解决问题,花了一天都没有解决。刚才重游了一次 devExpree的官网,找到了传说中的解决方案:原来官方不提创使用ASPxDropDownEdit,而是极力推荐 ComboBox。
解决方案如下:
1,html前台代码
注意:关键在于 sqlDataSource,FieldName,TextField,ValueField,KeyFieldName
<asp:SqlDataSource ID="sqlDataSrcApp" runat="server"></asp:SqlDataSource> <asp:SqlDataSource ID="sqlDataSrcGroup" runat="server"></asp:SqlDataSource> <dx:ASPxGridView ID="grvUserGroup" runat="server" AutoGenerateColumns="False" ClientIDMode="AutoID" CssFilePath="~/App_Themes/Office2003Blue/{0}/styles.css" CssPostfix="Office2003Blue" Width="100%" KeyFieldName="AppID" onrowinserting="grvUserGroup_RowInserting" onrowupdating="grvUserGroup_RowUpdating" onrowdeleting="grvUserGroup_RowDeleting" oncelleditorinitialize="grvUserGroup_CellEditorInitialize" > <ClientSideEvents RowDblClick="function(s, e) { s.StartEditRow(e.visibleIndex); }" /> <Columns> <dx:GridViewDataComboBoxColumn Caption="系统名称" FieldName="AppID" VisibleIndex="0" > <PropertiesComboBox ValueType="System.String" TextField="AppName" ValueField="AppID" EnableSynchronization="False" IncrementalFilteringMode="StartsWith" DataSourceID="sqlDataSrcApp" Width="100%"> </PropertiesComboBox> <EditCellStyle HorizontalAlign="Left"> </EditCellStyle> </dx:GridViewDataComboBoxColumn> <dx:GridViewDataComboBoxColumn Caption="用户组" FieldName="GroupID" VisibleIndex="1"> <PropertiesComboBox ValueType="System.String" TextField="GroupName" ValueField="GroupID" EnableSynchronization="False" IncrementalFilteringMode="StartsWith" DataSourceID="sqlDataSrcGroup" Width="100%"> </PropertiesComboBox> <EditCellStyle HorizontalAlign="Left"> </EditCellStyle> </dx:GridViewDataComboBoxColumn> </Columns> <SettingsBehavior AllowFocusedRow="True" /> <SettingsEditing Mode="PopupEditForm" PopupEditFormHeight="80px" PopupEditFormHorizontalAlign="WindowCenter" PopupEditFormModal="True" PopupEditFormVerticalAlign="WindowCenter" PopupEditFormWidth="450px" EditFormColumnCount="4" /> <SettingsText CommandCancel="取消" CommandDelete="删除" CommandEdit="修改" CommandNew="新建" CommandUpdate="确定" ConfirmDelete="你确定要删除吗" Title="修改用户组信息" PopupEditFormCaption="修改用户组信息" /> <Styles CssFilePath="~/App_Themes/Office2003Blue/{0}/styles.css" CssPostfix="Office2003Blue"> <Header HorizontalAlign="Center"> </Header> </Styles> </dx:ASPxGridView>
2,后台主要代码(1)
3,后台主要代码(2)
protected void grvUserGroup_CellEditorInitialize(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewEditorEventArgs e) { string sSQL = string.Empty; if (grvUserGroup.IsNewRowEditing && e.Column.FieldName == "AppID") { sSQL = "select [AppID],[AppName] from [sysApp]"; sqlDataSrcApp.SelectCommand = sSQL; sqlDataSrcApp.ConnectionString = Common.ConfigHelper.GetConfigString("ConnectionString"); //= Common.Tool.GetDataTable(out sError, sSQL); if (!string.IsNullOrEmpty(sError)) { Common.MessageBox.Show(this, sError); return; } } else if (grvUserGroup.IsNewRowEditing && e.Column.FieldName == "GroupID") { sSQL = "select [GroupID],[GroupName] from [sysGroup]"; sqlDataSrcGroup.SelectCommand = sSQL; sqlDataSrcGroup.ConnectionString = Common.ConfigHelper.GetConfigString("ConnectionString"); if (!string.IsNullOrEmpty(sError)) { Common.MessageBox.Show(this, sError); return; } } }
4,grvUserGroup_RowInserting,grvUserGroup_RowUpdating,grvUserGroup_RowDeleting 自行实现