ASPxGridView 自定义数据 GUID

<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();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值