Last active
March 11, 2020 07:58
-
-
Save deksoke/2fac9a07568e5ac23d9d74ddac97f341 to your computer and use it in GitHub Desktop.
Bug Add NewRow ASPxGridView (DevExpress)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ 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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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