Skip to content

Instantly share code, notes, and snippets.

@deksoke
Last active March 11, 2020 07:58
Show Gist options
  • Save deksoke/2fac9a07568e5ac23d9d74ddac97f341 to your computer and use it in GitHub Desktop.
Save deksoke/2fac9a07568e5ac23d9d74ddac97f341 to your computer and use it in GitHub Desktop.
Bug Add NewRow ASPxGridView (DevExpress)
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WEB.ATS.Pages.Job.WebForm1" %>
<%@ Register Assembly="DevExpress.Web.v18.2, Version=18.2.8.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" Namespace="DevExpress.Web" TagPrefix="dx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<dx:ASPxGridView ID="dgvSkill" ClientInstanceName="dgvSkill" runat="server" Theme="MaterialCompact" Width="100%" AutoGenerateColumns="False"
KeyFieldName="Id"
OnCellEditorInitialize="dgvSkill_CellEditorInitialize"
OnInitNewRow="dgvSkill_InitNewRow"
OnDataBinding="dgvSkill_DataBinding"
OnRowDeleting="dgvSkill_RowDeleting"
OnRowInserting="dgvSkill_RowInserting"
OnRowUpdating="dgvSkill_RowUpdating">
<SettingsBehavior ConfirmDelete="True" />
<Columns>
<dx:GridViewCommandColumn ShowDeleteButton="True" ShowEditButton="True" ShowInCustomizationForm="True" ShowNewButtonInHeader="True" VisibleIndex="0" Width="150px">
</dx:GridViewCommandColumn>
<dx:GridViewDataTextColumn FieldName="Id" ShowInCustomizationForm="True" VisibleIndex="1" Visible="False">
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="SkillName" ShowInCustomizationForm="True" VisibleIndex="5">
<EditFormSettings Visible="False" />
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="CategoryName" ShowInCustomizationForm="True" VisibleIndex="3">
<EditFormSettings Visible="False" />
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataTextColumn>
<dx:GridViewDataTextColumn FieldName="SkillCategoryId" ShowInCustomizationForm="True" VisibleIndex="2" Visible="False">
<EditFormSettings Visible="False" />
</dx:GridViewDataTextColumn>
<dx:GridViewBandColumn Caption="Experience" ShowInCustomizationForm="True" VisibleIndex="6">
<HeaderStyle HorizontalAlign="Center" />
<Columns>
<dx:GridViewDataSpinEditColumn Caption="Max (Years)" FieldName="MaxEXPYear" ShowInCustomizationForm="True" VisibleIndex="1" Width="100px">
<PropertiesSpinEdit DisplayFormatString="g" MaxValue="100">
<ValidationSettings>
<RequiredField IsRequired="True" />
</ValidationSettings>
</PropertiesSpinEdit>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataSpinEditColumn>
<dx:GridViewDataSpinEditColumn Caption="Min (Years)" FieldName="MinEXPYear" ShowInCustomizationForm="True" VisibleIndex="0" Width="100px">
<PropertiesSpinEdit DisplayFormatString="g" MaxValue="100">
<ValidationSettings>
<RequiredField IsRequired="True" />
</ValidationSettings>
</PropertiesSpinEdit>
<HeaderStyle HorizontalAlign="Center" />
</dx:GridViewDataSpinEditColumn>
</Columns>
</dx:GridViewBandColumn>
<dx:GridViewDataComboBoxColumn Caption="Skill" FieldName="SkillId" ShowInCustomizationForm="True" VisibleIndex="4" Visible="False">
<PropertiesComboBox ValueType="System.Int32">
<Columns>
<dx:ListBoxColumn Caption="Category" FieldName="CategoryName">
</dx:ListBoxColumn>
<dx:ListBoxColumn Caption="Skill" FieldName="SkillName">
</dx:ListBoxColumn>
</Columns>
<ValidationSettings>
<RequiredField IsRequired="True" />
</ValidationSettings>
</PropertiesComboBox>
<EditFormSettings Visible="True" />
</dx:GridViewDataComboBoxColumn>
</Columns>
</dx:ASPxGridView>
</div>
</form>
</body>
</html>
public partial class WebForm1 : System.Web.UI.Page
{
private const int tmpId = 999900;
BIL.ATS.UnitOfWork unit = new BIL.ATS.UnitOfWork();
public List<vwJobSkillRequired> DTvwJobSkillRequiredList
{
get
{
return (List<vwJobSkillRequired>)Session["DTvwCandidateEducationList"];
}
set
{
Session["DTvwCandidateEducationList"] = value;
}
}
public List<vwSkill> DTvwSkillList
{
get
{
return (List<vwSkill>)Session["DTskillList"];
}
set
{
Session["DTskillList"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DTvwJobSkillRequiredList = new List<vwJobSkillRequired>();
DTvwSkillList = unit.vwSkillInfo.GetAll().ToList();
}
}
#region "GridView Skills"
protected void dgvSkill_DataBinding(object sender, EventArgs e)
{
((ASPxGridView)sender).DataSource = DTvwJobSkillRequiredList;
}
protected void dgvSkill_InitNewRow(object sender, DevExpress.Web.Data.ASPxDataInitNewRowEventArgs e)
{
e.NewValues["MinEXPYear"] = 0;
e.NewValues["MaxEXPYear"] = 0;
//e.NewValues["SkillId"] = 0;
//var xx = e.NewValues.Count;
}
protected void dgvSkill_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
{
var grid = ((ASPxGridView)sender);
vwJobSkillRequired item = DTvwJobSkillRequiredList.Find(c => c.Id == (int)e.Keys[0]);
if (item != null)
DTvwJobSkillRequiredList.Remove(item);
grid.DataBind();
e.Cancel = true;
grid.CancelEdit();
}
protected void dgvSkill_RowInserting(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
var grid = ((ASPxGridView)sender);
vwJobSkillRequired item = new vwJobSkillRequired();
item.Id = tmpId + DTvwJobSkillRequiredList.Count;
item.MinEXPYear = Convert.ToInt32(e.NewValues["MinEXPYear"]);
item.MaxEXPYear = Convert.ToInt32(e.NewValues["MaxEXPYear"]);
item.SkillId = Convert.ToInt32(e.NewValues["SkillId"]);
var skillObj = unit.M_Skill.GetFirst(c => c.SkillId == item.SkillId);
if (skillObj != null)
{
item.SkillName = skillObj.SkillName;
item.SkillCategoryId = skillObj.SkillCategoryId;
var catObj = unit.M_SkillCategory.GetFirst(c => c.CategoryId == item.SkillCategoryId);
if (catObj != null)
item.CategoryName = catObj.CategoryName;
}
DTvwJobSkillRequiredList.Add(item);
grid.DataBind();
e.Cancel = true;
grid.CancelEdit();
}
protected void dgvSkill_RowUpdating(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
var grid = ((ASPxGridView)sender);
vwJobSkillRequired item = DTvwJobSkillRequiredList.First(c => c.Id == (int)e.Keys[0]);
if (item != null)
{
item.MinEXPYear = Convert.ToInt32(e.NewValues["MinEXPYear"]);
item.MaxEXPYear = Convert.ToInt32(e.NewValues["MaxEXPYear"]);
item.SkillId = (int)e.NewValues["SkillId"];
var skillObj = unit.M_Skill.GetFirst(c => c.SkillId == item.SkillId);
if (skillObj != null)
{
item.SkillName = skillObj.SkillName;
item.SkillCategoryId = skillObj.SkillCategoryId;
var catObj = unit.M_SkillCategory.GetFirst(c => c.CategoryId == item.SkillCategoryId);
if (catObj != null)
item.CategoryName = catObj.CategoryName;
}
grid.DataBind();
}
e.Cancel = true;
grid.CancelEdit();
}
protected void dgvSkill_CellEditorInitialize(object sender, ASPxGridViewEditorEventArgs e)
{
ASPxGridView grid = sender as ASPxGridView;
if (grid.IsEditing || grid.IsNewRowEditing)
{
switch (e.Column.FieldName)
{
case "SkillId":
ASPxComboBox dropDownList = e.Editor as ASPxComboBox;
var currentSkillID = grid.GetRowValues(grid.EditingRowVisibleIndex, e.Column.FieldName);
if (grid.IsNewRowEditing)
{
dropDownList.DataSource = DTvwSkillList.Where(c => !DTvwJobSkillRequiredList.Any(s => s.SkillId == c.SkillId)).ToList();
}
else
{
dropDownList.DataSource = DTvwSkillList.Where(c => !DTvwJobSkillRequiredList.Any(s => s.SkillId == c.SkillId) || c.SkillId == Convert.ToInt32(currentSkillID)).ToList();
}
dropDownList.TextField = "SkillName";
dropDownList.ValueField = "SkillId";
dropDownList.ValueType = typeof(System.Int32);
dropDownList.DataBind();
if (e.KeyValue != DBNull.Value && e.KeyValue != null && currentSkillID != null && currentSkillID != DBNull.Value)
{
dropDownList.Value = currentSkillID;
}
break;
}
}
}
#endregion
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment