您的位置:首页 > 编程语言 > ASP

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

2011-11-01 17:51 519 查看
 这该死的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 自行实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息