<dxwgv:ASPxGridView ID="ASPxGridViewProjectUser" runat="server" AutoGenerateColumns="False"
Width="100%" KeyFieldName="UserName" ClientInstanceName="ASPxGridViewProjectUserClient"
OnRowUpdating="ASPxGridViewProjectUser_OnRowUpdating" OnRowInserting="ASPxGridViewProjectUser_OnRowInserting"
OnRowDeleting="ASPxGridViewProjectUser_OnRowDeleting" OnInitNewRow="ASPxGridViewProjectUser_OnInitNewRow"
OnStartRowEditing="ASPxGridViewProjectUser_OnStartRowEditing">
<Columns>
<dxwgv:GridViewDataCheckColumn FieldName="Select" VisibleIndex="0" Caption="Select">
<EditFormSettings Visible="False" />
</dxwgv:GridViewDataCheckColumn>
<dxwgv:GridViewDataComboBoxColumn FieldName="UserName" VisibleIndex="1" Caption="Name"
>
<PropertiesComboBox DataSourceID="EntityDataSourceProjectUser" ValueField="UserID"
TextField="UserName" ValueType="System.String" >
</PropertiesComboBox>
</dxwgv:GridViewDataComboBoxColumn>
<dxwgv:GridViewDataTextColumn FieldName="Email" VisibleIndex="2">
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn FieldName="Phone" VisibleIndex="3">
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn FieldName="Mobile" VisibleIndex="4">
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataTextColumn FieldName="Location" VisibleIndex="5">
</dxwgv:GridViewDataTextColumn>
<dxwgv:GridViewDataMemoColumn FieldName="Comment" ReadOnly="False" VisibleIndex="6">
<PropertiesMemoEdit Height="120">
</PropertiesMemoEdit>
</dxwgv:GridViewDataMemoColumn>
<dxwgv:GridViewCommandColumn VisibleIndex="50" Width="120" Name="Command">
<NewButton Visible="true" Text="Add" >
</NewButton>
<EditButton Visible="true">
</EditButton>
<DeleteButton Visible="true" Text="Remove">
</DeleteButton>
</dxwgv:GridViewCommandColumn>
</Columns>
<SettingsBehavior AllowFocusedRow="true" ConfirmDelete="true" />
<SettingsEditing Mode="PopupEditForm" EditFormColumnCount="1" PopupEditFormAllowResize="true"
PopupEditFormHorizontalAlign="WindowCenter" PopupEditFormVerticalAlign="WindowCenter"
PopupEditFormWidth="300" />
<Styles>
<EditFormColumnCaption Wrap="False">
</EditFormColumnCaption>
<Header HorizontalAlign="Center">
</Header>
<Cell Wrap="false">
</Cell>
<FocusedRow BackColor="#9EACB1" >
</FocusedRow>
</Styles>
<Settings UseFixedTableLayout="false" />
<Border BorderStyle="Solid"></Border>
</dxwgv:ASPxGridView>
数据结构
public void CreateTable()
{
this.CurProjectUserTable = new DataTable();
this.CurProjectUserTable.Columns.Add("Select", typeof(bool));
this.CurProjectUserTable.Columns.Add("UserName", typeof(string));
this.CurProjectUserTable.Columns.Add("Email", typeof(string));
this.CurProjectUserTable.Columns.Add("Phone", typeof(string));
this.CurProjectUserTable.Columns.Add("Mobile", typeof(string));
this.CurProjectUserTable.Columns.Add("Location", typeof(string));
this.CurProjectUserTable.Columns.Add("Comment", typeof(string));
foreach (ProjectRole projectRole in this.CurDBManager.ProjectRole.SelectAll())
{
this.CurProjectUserTable.Columns.Add(projectRole.ProjectRoleName, typeof(bool));
}
this.ASPxGridViewProjectUser.Columns["Command"].VisibleIndex = 50;
}
根据数据结构,自动添加Grid列
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack && !Page.IsCallback)
{
this.ASPxHiddenFieldParam["ProjectID"] = 0;
int visibleIndex = 30;
foreach (ProjectRole projectRole in this.CurDBManager.ProjectRole.SelectAll())
{
GridViewDataCheckColumn newGridColum = new GridViewDataCheckColumn();
newGridColum.FieldName = projectRole.ProjectRoleName;
newGridColum.VisibleIndex = visibleIndex++;
newGridColum.Width = 120;
this.ASPxGridViewProjectUser.Columns.Add(newGridColum);
}
}
this.ShowProjectUserList();
}
加载数据
public void ShowProjectUserList()
{
this.CreateTable();
this.CurProjectUserList = this.CurDBManager.UserInfo.SelectUserInProject(this.CurProjectID);
this.CreateTableData();
this.EntityDataSourceProjectUser.Where = this.GetSQLString("it.UserName", "&&", this.CurProjectUserList.Select(it => it.UserName).ToList());
this.ASPxGridViewProjectUser.DataSource = this.CurProjectUserTable;
this.ASPxGridViewProjectUser.DataBind();
}
public void CreateTableData()
{
foreach (UserInfo userInfo in this.CurProjectUserList)
{
DataRow newRow = this.CurProjectUserTable.NewRow();
newRow["Select"] = true;
newRow["UserName"] = userInfo.UserName;
newRow["Email"] = userInfo.Email;
newRow["Phone"] = userInfo.Phone;
newRow["Mobile"] = userInfo.Mobile;
newRow["Location"] = userInfo.Location;
newRow["Comment"] = userInfo.Comment;
List<ProjectRole> curUserProjectRoleList = this.CurDBManager.ProjectRole.GetUserProjectRole(this.CurProjectID, userInfo.UserID);
foreach (ProjectRole projectRole in this.CurDBManager.ProjectRole.SelectAll())
{
newRow[projectRole.ProjectRoleName] =
curUserProjectRoleList.Exists(it => it.ProjectRoleName == projectRole.ProjectRoleName);
}
this.CurProjectUserTable.Rows.Add(newRow);
}
}
添加数据时,初始化编辑框界面
protected void ASPxGridViewProjectUser_OnInitNewRow(object sender, ASPxDataInitNewRowEventArgs e)
{
(this.ASPxGridViewProjectUser.Columns["Email"] as GridViewDataTextColumn).EditFormSettings.Visible = DefaultBoolean.False;
(this.ASPxGridViewProjectUser.Columns["Phone"] as GridViewDataTextColumn).EditFormSettings.Visible = DefaultBoolean.False;
(this.ASPxGridViewProjectUser.Columns["Mobile"] as GridViewDataTextColumn).EditFormSettings.Visible = DefaultBoolean.False;
(this.ASPxGridViewProjectUser.Columns["Location"] as GridViewDataTextColumn).EditFormSettings.Visible = DefaultBoolean.False;
(this.ASPxGridViewProjectUser.Columns["Comment"] as GridViewDataMemoColumn).EditFormSettings.Visible = DefaultBoolean.False;
}
插入操作
protected void ASPxGridViewProjectUser_OnRowInserting(object sender, ASPxDataInsertingEventArgs e)
{
if (e.NewValues["UserName"] == null)
{
throw new Exception("User not selectd!");
}
Guid userID = new Guid(e.NewValues["UserName"].ToString());
…
if (selectedCount == 0)
{
throw new Exception("Role not selectd!");
}
e.Cancel = true;
ASPxGridViewProjectUser.CancelEdit();
ASPxGridViewProjectUser.DataBind();
this.ShowProjectUserList();
}
更新操作
初始化编辑界面
protected void ASPxGridViewProjectUser_OnStartRowEditing(object sender, ASPxStartRowEditingEventArgs e)
{
if (!ASPxGridViewProjectUser.IsNewRowEditing)
{
(this.ASPxGridViewProjectUser.Columns["UserName"] as GridViewDataComboBoxColumn).PropertiesComboBox.
DropDownButton.Visible = false;
}
}
更新
protected void ASPxGridViewProjectUser_OnRowUpdating(object sender, ASPxDataUpdatingEventArgs e)
{
if (e.NewValues["UserName"] == null)
{
throw new Exception("User not selectd!");
}
…
e.Cancel = true;
ASPxGridViewProjectUser.CancelEdit();
ASPxGridViewProjectUser.DataBind();
this.ShowProjectUserList();
}
删除操作
protected void ASPxGridViewProjectUser_OnRowDeleting(object sender, ASPxDataDeletingEventArgs e)
{
UserInfo curUserInfo = this.CurDBManager.UserInfo.SelectByName(e.Values["UserName"].ToString());
e.Cancel = true;
ASPxGridViewProjectUser.CancelEdit();
ASPxGridViewProjectUser.DataBind();
this.ShowProjectUserList();
}