DevExpress: ASPxGridView 中绑定下拉框(不用该死的ASPxDropDownEdit,而用简单的GridViewDataComboBoxColumn)...

这该死的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)

// form_load中的 if(!this.IsPostBack){----} // 省略号的部分包括以下内容 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; } 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; }

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 自行实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值