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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值