using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Examples
{
    public partial class SysObjects : Form
    {
        public SysObjects()
        {
            InitializeComponent();
        }
        SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=jQuery;UID=sa;password=tiger123");
        SqlCommand cmd;
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                con.Open();
                cmd = new SqlCommand(richTextBox1.Text,con);
                SqlDataReader dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    DataTable dt = new DataTable();
                    dt.Load(dr);
                    dataGrid1.DataSource = dt;                

                }
            }
            catch (Exception ex)
            {
            }

        }
    }
}

update PFEP set supcusttype='1' where supcusttype is null
select supcusttype from PFEP where supcusttype is null


You can follow the following steps to copy it from GAC (Global Assembly cache):

COPY Microsoft.ReportViewer. ProcessingObjectModel
1. Open a command prompt (select Start/Run and then enter "cmd" and press enter).

2. Type the following command and press enter:

cd C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel

2 (i) Type 'dir' and press 'enter'. You would be able to see the following folder:
It depends on which version you have on your system. It can be either 8.0.0.0 OR 9.0.0.0.

8.0.0.0__b03f5f7f11d50a3a OR
9.0.0.0__b03f5f7f11d50a3a

2(ii). Type "cd 8.0.0.0__b03f5f7f11d50a3a" if you have 8.0.0.0 version OR
"cd 9.0.0.0__b03f5f7f11d50a3a" if you have 9.0.0.0 and press 'enter'.

2(iii). You should be able to see the following DLL in this folder:
Microsoft.ReportViewer.ProcessingObjectModel.dll

2(iv). Now use the following command to copy the dll file to your bin directory:
copy *.dll d:\YourProject\bin


3. COPY Microsoft.ReportViewer.Common
cd C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.Common

3 (i) Type 'dir' and press 'enter'. You would be able to see the following folder:
It depends on which version you have on your system. It can be either 8.0.0.0 OR 9.0.0.0.

8.0.0.0__b03f5f7f11d50a3a OR
9.0.0.0__b03f5f7f11d50a3a

3(ii). Type "cd 8.0.0.0__b03f5f7f11d50a3a" if you have 8.0.0.0 version in step 3 OR
"cd 9.0.0.0__b03f5f7f11d50a3a" if you have 9.0.0.0 and press 'enter'.

3(iii). You should be able to see the following DLL in this folder:
Microsoft.ReportViewer.Common.dll

3(iv). Now use the following command to copy the dll file to your bin directory:
copy *.dll d:\YourProject\bin

Here the path shown in red color should be the path of your project's bin folder.

View


@model DatePickerTemp.Models.FooEditModel
@{
    ViewBag.Title = "Edit";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
    Edit</h2>
@Model.Message
@using (Html.BeginForm())
{
    @Html.EditorFor(m => m.Foo)
    <input id="submit" name="submit" type="submit" value="Save" />
}

Models


using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using DatePickerTemp.Infrastructure;

namespace DatePickerTemp.Models
{
    public class Foo
    {
        public string Name { get; set; }

        [DataType(DataType.Date)]
        public DateTime Date1 { get; set; }

        [DateRange(Min = "2010/12/02")]
        public DateTime Date2 { get; set; }

        [DateRange(Max = "2010/12/20")]
        public DateTime Date3 { get; set; }

        [DateRange(Min = "2010/12/02", Max = "2010/12/20")]
        public DateTime Date4 { get; set; }
    }
}



namespace DatePickerTemp.Models
{
    public class FooEditModel
    {
        public string Message { get; set; }
        public Foo Foo { get; set; }
    }
}
DatePicker.zip

Model


  public DataSet displayPageLoad(Int64 opt6)
        {
            if (cn.State == ConnectionState.Open)
                cn.Close();
            cn.Open();
            ds = new DataSet();
            ds.Clear();
            SqlDataAdapter ad;
            sqlcmd = new SqlCommand();
            sqlcmd.Parameters.Clear();
            sqlcmd.Connection = cn;
            sqlcmd.CommandType = CommandType.StoredProcedure;
            sqlcmd.CommandText = "Outgoing_Calls_SP";
            sqlcmd.Parameters.AddWithValue("@opt", opt6);
            sqlcmd.Parameters.AddWithValue("@telecom_id", "");
            sqlcmd.Parameters.AddWithValue("@datee", "");
            sqlcmd.Parameters.AddWithValue("@timee_from", "");
            sqlcmd.Parameters.AddWithValue("@timee_to", "");
            sqlcmd.Parameters.AddWithValue("@contact_number", "");
            sqlcmd.Parameters.AddWithValue("@contact_person", "");
            sqlcmd.Parameters.AddWithValue("@communication_msg", "");
            sqlcmd.Parameters.AddWithValue("@response_msg", "");
            sqlcmd.Parameters.AddWithValue("@dept", "");
            sqlcmd.Parameters.AddWithValue("@callername", "");
            sqlcmd.Parameters.AddWithValue("@branch", "");
            sqlcmd.Parameters.AddWithValue("@status", "");
            sqlcmd.Parameters.AddWithValue("@alerttime", "");
            sqlcmd.Parameters.AddWithValue("@alert", "");
            sqlcmd.Parameters.AddWithValue("@cid", "");
            sqlcmd.Parameters.AddWithValue("@deptmanager", "");
            ad = new SqlDataAdapter(sqlcmd);
            ad.Fill(ds);
            return ds;
        }
        public List<IDictionary> FetchOutgoingDetails()
        {
            DataSet dsEmployee = new DataSet();
            Int64 opt6 = 6;
            dsEmployee = displayPageLoad(opt6);

            return ConvertToDictionary(dsEmployee.Tables[0]);
        }
        private List<IDictionary> ConvertToDictionary(DataTable dtObject)
        {
            var columns = dtObject.Columns.Cast<DataColumn>();

            var dictionaryList = dtObject.AsEnumerable()
                .Select(dataRow => columns
                    .Select(column =>
                        new { Column = column.ColumnName, Value = dataRow[column] })
                             .ToDictionary(data => data.Column, data => data.Value)).ToList().ToArray();

            return dictionaryList.ToList<IDictionary>();
        }

Controller


 public ActionResult OutgoingList(CabAutomationSystem.Models.Outgoing outgoinglist)
        {
            var resultSet = outgoinglist.FetchOutgoingDetails();
            return View(resultSet);
        }

View


@{
    ViewBag.Title = "OutgoingList";
    Layout = "~/Views/Admin/Master.cshtml";
}

<h2>OutgoingList</h2>

@section Styles
{
<link href="@Url.Content("~/Content/grid.css")" rel="stylesheet" type="text/css" />
}

@{
          ViewBag.Title = "List";
    }

    @using System.Dynamic
@model List<System.Collections.IDictionary>
@{
    var result = new List<dynamic>();

    foreach (var emprow in Model)
    {
        var row = (IDictionary<string, object>)new ExpandoObject();
        Dictionary<string, object> eachEmpRow = (Dictionary<string, object>)emprow;

        foreach (KeyValuePair<string, object> keyValuePair in eachEmpRow)
        {
            row.Add(keyValuePair);
        }
        result.Add(row);
    }

}

@{

    var grid = new WebGrid(source: result,
                                           defaultSort: "telecom_id",
                                           rowsPerPage:5, fieldNamePrefix:"wg_",
                                           canPage:true,canSort:true,
                                           pageFieldName:"pg",sortFieldName:"srt"
                                           );
 }

 <table cellpadding="0" cellspacing="0" width="100%">
    <tr>
        <td>
            @grid.GetHtml(tableStyle:"listing-border",headerStyle:"gridhead",footerStyle:"paging",rowStyle:"td-dark",alternatingRowStyle:"td-light",
                            columns:
                                grid.Columns(
                                grid.Column(header:"", format: @<text><input id="chk" type="checkbox" value="@item.telecom_id" /></text>),
                                    grid.Column("datee", "Date", style: "colFirstName"),
                                    grid.Column("timee_from", "Time from", style: "colLastName"),
                                    grid.Column("timee_to", "Time to", style: "colPhone"),
                                    grid.Column("contact_number", "Contact Number", style: "colEmail"),
                                    grid.Column("contact_person", "Contact Person", style: "colContactType"),
                                    grid.Column(header: "Edit", format: @<text><a href="@Url.Action("Edit", "Contact", new { id = item.telecom_id })" ><img src="../../Content/images/Edit.jpg" alt="" style="border:none;" /></a></text>, style: "colOperation"),
                                    grid.Column(header: "Delete", format: @<text><a href="@Url.Action("Delete", "Contact", new { id = item.telecom_id })" onclick="javascript:return ConfirmDelete();"><img src="../../Content/images/delete.jpg" alt="" style="border:none;" /></a></text>, style: "colOperation")
                                ),mode:WebGridPagerModes.Numeric)
        </td>
    </tr>
 </table>
<script type="text/javascript">
    function ConfirmDelete() {
        return confirm("Are you sure you want to delete contacts?");
    }
</script>



CSS


.listing-border { background: #fd7d0f;}
.gridhead { background:#FFAA5F;  font: bold 13px Arial, Helvetica, sans-serif; color:#000000; text-decoration: none; height: 27px; text-align: left;}
.gridhead th a {text-decoration:none;color:#000000;}
.gridhead th a:hover {text-decoration:underline;color:#FF0000;}
.td-dark { background: #ffffff; height: 20px; }
.td-light { background: #FFE2BF; height: 20px; }
.paging { background: #fd7d0f;text-align: right;color:#000000;}
.paging span { font: bold 12px Arial, Helvetica, sans-serif; color:#FFFFFF; margin-right: 3px; padding: 1px 3px 1px 3px }
.paging a { font: bold 12px Arial, Helvetica, sans-serif; color:#000000; text-decoration: none; margin-right: 3px; border: 1px solid #ffffff; background: #fd7d0f; padding: 1px 3px 1px 3px }
.paging a:hover { font: bold 12px Arial, Helvetica, sans-serif; color:#000000; text-decoration: none; border: 1px solid #ffffff; background: #ffffff; }
.colFirstName{width:18%;text-align:left;}
.colLastName{width:18%;text-align:left;}
.colPhone{width:14%;text-align:left;}
.colEmail{width:19%;text-align:left;}
.colContactType{width:18%;text-align:left;}
.colOperation{width:50px;text-align:center;}

using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
public class Purchases : IControlEvent
{
public long PurchaseOrderID = 0;
public DataTable dt;
public DataSet ds = new DataSet();
private DataView mView;
Theme _theme;
public event ChangedEventHandler Changed;
public delegate void ChangedEventHandler();
private long EnteredBy;
ComboBox cmbProductCode;
private string pCode;
public DataRowView dv;
public int ProductID = 0;
public List<long> ProductIDs = new List<long>();
DataGridViewComboBoxColumn combocolum = new DataGridViewComboBoxColumn();
DataGridViewComboBoxColumn namecombocolum = new DataGridViewComboBoxColumn();

int PurchaseItemID = 0;
public enum CBO_MODE
{
NORMAL = 0,
EDITABLE = 1,
EDITABLE_WITH_NOTIFYCURRENTCELLDIRTY = 2
}

const bool ALLOW_ADDS = true;

private CBO_MODE MODE = CBO_MODE.EDITABLE_WITH_NOTIFYCURRENTCELLDIRTY;
public bool Notify(object obj)
{
try {
PurchaseOrderID = Convert.ToInt32(obj);
FillDetails(PurchaseOrderID);
FillGrid(PurchaseOrderID);
btnDelete.Enabled = true;
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
return false;
}
return true;
}

private void FillDetails(long PurchaseOrderID)
{
POSCLayer.Purchaseorders c = new POSCLayer.Purchaseorders();
c = POSBLayer.Purchaseorders.GetValue(PurchaseOrderID);
if (c != null) {
dtpPurchaseDate.Value = c.PurchaseDate;
txtInvoiceNumber.Text = c.InvoiceNumber;
txtOrderDetail.Text = c.OrderDetail;
txtRemarks.Text = c.Remarks;
txtTotalAmount.Text = c.TotalAmount.ToString();
EnteredBy = c.EnteredBy;
btnDelete.Enabled = true;
}
}

public void FillGrid(long PurchaseOrderID)
{
DataTable dtgrid = POSBLayer.Purchaseitems.GetDataAll(PurchaseOrderID);
int j = 0;
dgvPurchaseItems.Rows.Clear();
if (dtgrid.Rows.Count > 0) {
for (j = 0; j <= dtgrid.Rows.Count - 1; j++) {
dgvPurchaseItems.Rows.Add();
//dgvPurchaseItems("Name", j).Value = dtgrid.Rows(j)("Name").ToString()
dgvPurchaseItems("Quantity", j).Value = dtgrid.Rows[j]["Quantity"].ToString();
dgvPurchaseItems("Damaged", j).Value = dtgrid.Rows[j]["Damaged"].ToString();
dgvPurchaseItems("Expired", j).Value = dtgrid.Rows[j]["Expired"].ToString();
dgvPurchaseItems("PurchaseRate", j).Value = dtgrid.Rows[j]["PurchaseRate"].ToString();
dgvPurchaseItems("SellingRate", j).Value = dtgrid.Rows[j]["SellingRate"].ToString();
dgvPurchaseItems("Current", j).Value = dtgrid.Rows[j]["Current"].ToString();
dgvPurchaseItems("Loose", j).Value = dtgrid.Rows[j]["Loose"].ToString();
dgvPurchaseItems("PurchaseItemID", j).Value = dtgrid.Rows[j]["PurchaseItemID"].ToString();
dgvPurchaseItems("ProductID", j).Value = dtgrid.Rows[j]["ProductID"].ToString();

//Dim combo As DataGridViewComboBoxCell = TryCast(dgvPurchaseItems(0, j), DataGridViewComboBoxCell)
//Dim dt As DataTable = POSBLayer.Products.GetDataAll()
//combo.DataSource = dt
dgvPurchaseItems.Rows(j).Cells(combocolum.Name).Value = dtgrid.Rows[j]["pcode"].ToString();
dgvPurchaseItems.Rows(j).Cells(namecombocolum.Name).Value = dtgrid.Rows[j]["Name"].ToString();
ProductIDs.Add(Convert.ToInt64(dtgrid.Rows[j]["ProductID"].ToString()));
}
} else {
dgvPurchaseItems.Rows.Clear();
}
}

private void btnSave_Click(System.Object sender, System.EventArgs e)
{
try {

if (!string.IsNullOrEmpty(txtInvoiceNumber.Text) & !string.IsNullOrEmpty(txtOrderDetail.Text) & !string.IsNullOrEmpty(txtTotalAmount.Text)) {
POSCLayer.Purchaseorders data = new POSCLayer.Purchaseorders();
data.PurchaseOrderID = PurchaseOrderID;
data.PurchaseDate = dtpPurchaseDate.Value;
data.OrderDetail = txtOrderDetail.Text;
data.Remarks = txtRemarks.Text;
data.InvoiceNumber = txtInvoiceNumber.Text;
data.TotalAmount = Convert.ToDecimal(txtTotalAmount.Text);
if (PurchaseOrderID == 0) {
data.EnteredBy = Config.User.UserID;
EnteredBy = Config.User.UserID;
} else {
data.EnteredBy = EnteredBy;
}
data.ModifiedBy = Config.User.UserID;

long result = POSBLayer.Purchaseorders.Save(data);
PurchaseOrderID = result;


btnNew.Enabled = true;
btnDelete.Enabled = false;

POSCLayer.Purchaseitems data1 = new POSCLayer.Purchaseitems();
int i = 0;


foreach (DataGridViewRow row in dgvPurchaseItems.Rows) {

if (row.Cells("PurchaseItemID").Value != null & row.Cells("ProductID").Value != null & row.Cells("Quantity").Value != null & row.Cells("Damaged").Value != null & row.Cells("Expired").Value != null & row.Cells("PurchaseRate").Value != null & row.Cells("SellingRate").Value != null & row.Cells("Current").Value != null) {
if (row.Cells("PurchaseItemID").Value != null) {
int.TryParse(row.Cells("PurchaseItemID").Value.ToString(), out PurchaseItemID);
}

if (row.Cells("ProductID").Value != null) {
int.TryParse(row.Cells("ProductID").Value.ToString(), out ProductID);
}


data1.PurchaseOrderID = PurchaseOrderID;
data1.ProductID = ProductID;

DataTable dtItems = POSBLayer.Purchaseitems.Get_PurchaseItems_ProductID(PurchaseOrderID, ProductID);

if (dtItems.Rows.Count > 0) {
if (PurchaseItemID == 0) {
data1.PurchaseItemID = POSBLayer.Purchaseitems.Get_PurchaseItemsID(PurchaseOrderID, ProductID);
data1.Quantity = decimal.Parse(row.Cells("Quantity").Value.ToString()) + decimal.Parse(dtItems.Rows[0]["Quantity"].ToString());
data1.DamagedQuantity = decimal.Parse(row.Cells("Damaged").Value.ToString()) + decimal.Parse(dtItems.Rows[0]["DamagedQuantity"].ToString());
data1.ExpiredQuantity = decimal.Parse(row.Cells("Expired").Value.ToString()) + decimal.Parse(dtItems.Rows[0]["ExpiredQuantity"].ToString());
data1.PurchasePrice = decimal.Parse(row.Cells("PurchaseRate").Value.ToString()) + decimal.Parse(dtItems.Rows[0]["PurchasePrice"].ToString());
data1.SellingPrice = decimal.Parse(row.Cells("SellingRate").Value.ToString()) + decimal.Parse(dtItems.Rows[0]["SellingPrice"].ToString());
data1.CurrentQuantity = decimal.Parse(row.Cells("Current").Value.ToString()) + decimal.Parse(dtItems.Rows[0]["CurrentQuantity"].ToString());
data1.CurrentLooseVolume = 0;
data1.LooseQuantity = 0;
} else {
data1.PurchaseItemID = PurchaseItemID;
data1.Quantity = decimal.Parse(row.Cells("Quantity").Value.ToString());
data1.DamagedQuantity = decimal.Parse(row.Cells("Damaged").Value.ToString());
data1.ExpiredQuantity = decimal.Parse(row.Cells("Expired").Value.ToString());
data1.PurchasePrice = decimal.Parse(row.Cells("PurchaseRate").Value.ToString());
data1.SellingPrice = decimal.Parse(row.Cells("SellingRate").Value.ToString());
data1.CurrentQuantity = decimal.Parse(row.Cells("Current").Value.ToString());
data1.CurrentLooseVolume = 0;
data1.LooseQuantity = 0;
}
} else {
data1.PurchaseItemID = PurchaseItemID;
data1.Quantity = decimal.Parse(row.Cells("Quantity").Value.ToString());
data1.DamagedQuantity = decimal.Parse(row.Cells("Damaged").Value.ToString());
data1.ExpiredQuantity = decimal.Parse(row.Cells("Expired").Value.ToString());
data1.PurchasePrice = decimal.Parse(row.Cells("PurchaseRate").Value.ToString());
data1.SellingPrice = decimal.Parse(row.Cells("SellingRate").Value.ToString());
data1.CurrentQuantity = decimal.Parse(row.Cells("Current").Value.ToString());
data1.CurrentLooseVolume = 0;
data1.LooseQuantity = 0;
}


result = POSBLayer.Purchaseitems.Save(data1);
i = i + 1;
}
}

if (Changed != null) {
Changed();
}

MessageBox.Show("Saved successfully.", "POS", MessageBoxButtons.OK, MessageBoxIcon.Information);
} else {
MessageBox.Show("Please enter required fields", "POS", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void Clear()
{
PurchaseOrderID = 0;
dtpPurchaseDate.Value = Convert.ToDateTime(DateAndTime.Now.ToString("dd-MM-yyyy"));
txtOrderDetail.Text = "";
txtRemarks.Text = "";
txtInvoiceNumber.Text = "";
txtTotalAmount.Text = "";
btnDelete.Enabled = false;
}

private void btnNew_Click(System.Object sender, System.EventArgs e)
{
try {
Clear();
dgvPurchaseItems.Rows.Clear();
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void btnDelete_Click(System.Object sender, System.EventArgs e)
{
try {
int checkPurchaseOrderID = 0;
checkPurchaseOrderID = POSBLayer.Purchaseorders.checkPurchaseOrderID(Convert.ToInt32(PurchaseOrderID));
if (checkPurchaseOrderID == 0) {
DialogResult msgResult = DialogResult.No;
msgResult = MessageBox.Show("Are you sure you want to remove the record ?", Config.MsgTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (msgResult == DialogResult.Yes) {
if (!string.IsNullOrEmpty(txtInvoiceNumber.Text) & !string.IsNullOrEmpty(txtOrderDetail.Text) & !string.IsNullOrEmpty(txtTotalAmount.Text)) {
int result = Convert.ToInt32(POSBLayer.Purchaseorders.Delete(PurchaseOrderID));

Clear();
if (Changed != null) {
Changed();
}
} else {
MessageBox.Show("Please enter required fields", Config.MsgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
} else {
dtpPurchaseDate.Focus();
}
} else {
MessageBox.Show("Cannot delete, this Purchase Order is already assigned to a Purchase Items.", Config.MsgTitle, MessageBoxButtons.OK, MessageBoxIcon.Information);
}
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void Purchases_Load(object sender, System.EventArgs e)
{
try {


DataTable dt = POSBLayer.Products.GetDataAll();

combocolum.DefaultCellStyle.Tag = "editable";
//  this is the enhance to control if editable or not
combocolum.HeaderText = "Code";
combocolum.DataPropertyName = "ProductID";
combocolum.DataSource = dt;
combocolum.DisplayMember = "pcode";
combocolum.ValueMember = "ProductID";
combocolum.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
combocolum.Name = "Product";
combocolum.ValueType = typeof(System.String);
combocolum.Width = 200;
dgvPurchaseItems.Columns.Add(combocolum);

//Dim Namecolum As New DataGridViewTextBoxColumn
//Namecolum.HeaderText = "Name"
//Namecolum.Name = "Name"
//Namecolum.ValueType = GetType(System.String)
//Namecolum.Width = 170
//Namecolum.ReadOnly = True
//dgvPurchaseItems.Columns.Add(Namecolum)
namecombocolum.DefaultCellStyle.Tag = "editable";
//  this is the enhance to control if editable or not
namecombocolum.HeaderText = "Name";
namecombocolum.DataPropertyName = "ProductID";
namecombocolum.DataSource = dt;
namecombocolum.DisplayMember = "NAME";
namecombocolum.ValueMember = "ProductID";
namecombocolum.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing;
namecombocolum.Name = "Name";
namecombocolum.ValueType = typeof(System.String);
namecombocolum.Width = 170;
dgvPurchaseItems.Columns.Add(namecombocolum);

DataGridViewTextBoxColumn Quantitycolum = new DataGridViewTextBoxColumn();
Quantitycolum.HeaderText = "Quantity";
Quantitycolum.Name = "Quantity";
Quantitycolum.ValueType = typeof(System.Decimal);
Quantitycolum.Width = 70;
dgvPurchaseItems.Columns.Add(Quantitycolum);

DataGridViewTextBoxColumn Damagedcolum = new DataGridViewTextBoxColumn();
Damagedcolum.HeaderText = "Damaged";
Damagedcolum.Name = "Damaged";
Damagedcolum.ValueType = typeof(System.Decimal);
Damagedcolum.Width = 70;
dgvPurchaseItems.Columns.Add(Damagedcolum);

DataGridViewTextBoxColumn Expiredcolum = new DataGridViewTextBoxColumn();
Expiredcolum.HeaderText = "Expired";
Expiredcolum.Name = "Expired";
Expiredcolum.ValueType = typeof(System.Decimal);
Expiredcolum.Width = 70;
dgvPurchaseItems.Columns.Add(Expiredcolum);

DataGridViewTextBoxColumn PurchaseRatecolum = new DataGridViewTextBoxColumn();
PurchaseRatecolum.HeaderText = "Purchase Rate";
PurchaseRatecolum.Name = "PurchaseRate";
PurchaseRatecolum.ValueType = typeof(System.Decimal);
PurchaseRatecolum.Width = 110;
dgvPurchaseItems.Columns.Add(PurchaseRatecolum);

DataGridViewTextBoxColumn SellingRatecolum = new DataGridViewTextBoxColumn();
SellingRatecolum.HeaderText = "Selling Rate";
SellingRatecolum.Name = "SellingRate";
SellingRatecolum.ValueType = typeof(System.Decimal);
SellingRatecolum.Width = 100;
dgvPurchaseItems.Columns.Add(SellingRatecolum);

DataGridViewTextBoxColumn Currentcolum = new DataGridViewTextBoxColumn();
Currentcolum.HeaderText = "Current";
Currentcolum.Name = "Current";
Currentcolum.ValueType = typeof(System.Decimal);
Currentcolum.ReadOnly = true;
Currentcolum.Width = 70;
dgvPurchaseItems.Columns.Add(Currentcolum);

DataGridViewTextBoxColumn Loosecolum = new DataGridViewTextBoxColumn();
Loosecolum.HeaderText = "Loose";
Loosecolum.Name = "Loose";
Loosecolum.ValueType = typeof(System.Decimal);
Loosecolum.ReadOnly = true;
Loosecolum.Width = 70;
dgvPurchaseItems.Columns.Add(Loosecolum);

DataGridViewTextBoxColumn PurchaseItemIDcolum = new DataGridViewTextBoxColumn();
PurchaseItemIDcolum.HeaderText = "PurchaseItemID";
PurchaseItemIDcolum.Name = "PurchaseItemID";
PurchaseItemIDcolum.ValueType = typeof(System.Decimal);
PurchaseItemIDcolum.Width = 70;
dgvPurchaseItems.Columns.Add(PurchaseItemIDcolum);

DataGridViewTextBoxColumn ProductIDcolum = new DataGridViewTextBoxColumn();
ProductIDcolum.HeaderText = "ProductID";
ProductIDcolum.Name = "ProductID";
ProductIDcolum.ValueType = typeof(System.Decimal);
ProductIDcolum.Width = 70;
dgvPurchaseItems.Columns.Add(ProductIDcolum);

DataGridViewLinkColumn Deletecolum = new DataGridViewLinkColumn();
Deletecolum.HeaderText = "Delete";
Deletecolum.Name = "Delete";
Deletecolum.Width = 70;
Deletecolum.Text = "Delete";
Deletecolum.UseColumnTextForLinkValue = true;
dgvPurchaseItems.Columns.Add(Deletecolum);

//Dim Savecolum As New DataGridViewLinkColumn
//Savecolum.HeaderText = "Save"
//Savecolum.Name = "Save"
//Savecolum.Width = 70
//Savecolum.Text = "Save"
//Savecolum.UseColumnTextForLinkValue = True
//dgvPurchaseItems.Columns.Add(Savecolum)


dgvPurchaseItems.RowHeadersVisible = false;
dgvPurchaseItems.BackgroundColor = Color.White;
dgvPurchaseItems.Columns("PurchaseItemID").Visible = false;
dgvPurchaseItems.Columns("ProductID").Visible = false;
//Theme.SetGridViewStyle(dgvPurchaseItems)
Theme.SetControlTheme(this);
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void dgvPurchaseItems_EditingControlShowing(System.Object sender, System.Windows.Forms.DataGridViewEditingControlShowingEventArgs e)
{
try {
// Here you control if combobox will be editable or not
if (object.ReferenceEquals(e.CellStyle.Tag, "editable")) {
DataGridView dgvPurchaseItems = (DataGridView)sender;
if (((e.Control) is ComboBox)) {
ComboBox cb = (ComboBox)e.Control;
if (((cb != null))) {
cb.DropDownStyle = ComboBoxStyle.DropDown;
cb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
cb.AutoCompleteSource = AutoCompleteSource.ListItems;
cb.SelectionChangeCommitted += cmbProductCodeOnSelectionChangeCommitted;
cb.LostFocus += cmbProductCode_LostFocus;
cb.Leave += cmbProductCode_Leave;

if ((MODE == CBO_MODE.EDITABLE_WITH_NOTIFYCURRENTCELLDIRTY)) {
// Added thanks to Ying Liu, Microsoft Support
dgvPurchaseItems.NotifyCurrentCellDirty(true);
}
}
}

}
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void cmbProductCodeOnSelectionChangeCommitted(object sender, EventArgs e)
{
DataGridViewComboBoxEditingControl comboBox = sender as DataGridViewComboBoxEditingControl;
if (sender == null) {
return;
}
if (comboBox.SelectedItem == null) {
return;
}
if (object.ReferenceEquals(this.dgvPurchaseItems.CurrentCell.Value, comboBox.SelectedItem)) {
return;
}

this.dgvPurchaseItems.CurrentCell.Value = comboBox.SelectedItem;
dv = (DataRowView)comboBox.SelectedItem;
pCode = Convert.ToString(dv["pcode"]);
ProductIDs.Add(Convert.ToInt64(dv["ProductID"]));
ProductID = Convert.ToInt32(dv["ProductID"]);

}

private void cmbProductCode_LostFocus(object sender, EventArgs e)
{
DataGridViewComboBoxEditingControl comboBox = sender as DataGridViewComboBoxEditingControl;
if (sender == null) {
return;
}
if (comboBox.SelectedItem == null) {
return;
}
if (object.ReferenceEquals(this.dgvPurchaseItems.CurrentCell.Value, comboBox.SelectedItem)) {
return;
}

this.dgvPurchaseItems.CurrentCell.Value = comboBox.SelectedItem;
dv = (DataRowView)comboBox.SelectedItem;
pCode = Convert.ToString(dv["pcode"]);
ProductIDs.Add(Convert.ToInt64(dv["ProductID"]));
ProductID = Convert.ToInt32(dv["ProductID"]);


}

private void cmbProductCode_Leave(object sender, EventArgs e)
{
DataGridViewComboBoxEditingControl comboBox = sender as DataGridViewComboBoxEditingControl;
if (sender == null) {
return;
}
if (comboBox.SelectedItem == null) {
return;
}
if (object.ReferenceEquals(this.dgvPurchaseItems.CurrentCell.Value, comboBox.SelectedItem)) {
return;
}

this.dgvPurchaseItems.CurrentCell.Value = comboBox.SelectedItem;
dv = (DataRowView)comboBox.SelectedItem;
pCode = Convert.ToString(dv["pcode"]);
ProductIDs.Add(Convert.ToInt64(dv["ProductID"]));
ProductID = Convert.ToInt32(dv["ProductID"]);


}

private void dgvPurchaseItems_CellEndEdit(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{

try {
int j = e.RowIndex;
decimal q = default(decimal);
decimal d = default(decimal);
decimal r = default(decimal);
decimal c = default(decimal);

decimal.TryParse(Convert.ToString(dgvPurchaseItems.Rows(j).Cells("Quantity").Value), out q);
decimal.TryParse(Convert.ToString(dgvPurchaseItems.Rows(j).Cells("Damaged").Value), out d);
decimal.TryParse(Convert.ToString(dgvPurchaseItems.Rows(j).Cells("Expired").Value), out r);

if (q < d + r) {
MessageBox.Show("Enter Quantity greater than Damaged and Expired.", "POS", MessageBoxButtons.OK, MessageBoxIcon.Information);
} else {
c = q - (d + r);
}




dgvPurchaseItems.Rows(j).Cells("Current").Value = c.ToString();
dgvPurchaseItems.Rows(j).Cells("Loose").Value = 0;

if (ProductID != 0) {
dgvPurchaseItems.Rows(j).Cells("ProductID").Value = ProductID;
dgvPurchaseItems.Rows(j).Cells("Name").Value = POSBLayer.Purchaseitems.GetProductName(ProductID);
dgvPurchaseItems.Rows(j).Cells("Product").Value = POSBLayer.Purchaseitems.GetProductCode(ProductID);
} else {
Name = Convert.ToString(dgvPurchaseItems.Rows(j).Cells("Name").Value);
pCode = Convert.ToString(dgvPurchaseItems.Rows(j).Cells("Product").Value);
dgvPurchaseItems.Rows(j).Cells("Name").Value = Name;
dgvPurchaseItems.Rows(j).Cells("Product").Value = pCode;
}

if (dgvPurchaseItems.Rows(j).Cells("PurchaseItemID").Value == null) {
dgvPurchaseItems.Rows(j).Cells("PurchaseItemID").Value = PurchaseItemID;
}


//Dim data1 As New POSCLayer.Purchaseitems

//data1.PurchaseItemID = CLng(dgvPurchaseItems.Rows(j).Cells(8).Value.ToString())
//data1.PurchaseOrderID = PurchaseOrderID
//data1.ProductID = CLng(dgvPurchaseItems.Rows(j).Cells(9).Value.ToString())
//data1.Quantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Quantity").Value.ToString())
//data1.DamagedQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Damaged").Value.ToString())
//data1.ExpiredQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Expired").Value.ToString())
//data1.PurchasePrice = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("PurchaseRate").Value.ToString())
//data1.SellingPrice = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("SellingRate").Value.ToString())
//data1.CurrentQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Current").Value.ToString())
//data1.CurrentLooseVolume = 0
//data1.LooseQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Loose").Value.ToString())
//Dim result = POSBLayer.Purchaseitems.Save(data1)
//MessageBox.Show("Saved successfully.",
//                                   "POS",
//                                   MessageBoxButtons.OK,
//                                   MessageBoxIcon.Information)
//FillGrid(PurchaseOrderID)

} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void dgvPurchaseItems_CellLeave(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
try {
//If Not cmbProductCode Is Nothing Then
//    pCode = cmbProductCode.Text
//    Dim dt As DataTable = POSBLayer.Products.GetDataAll()
//    cmbProductCode.DataSource = dt
//    cmbProductCode.DisplayMember = "Code"
//    cmbProductCode.ValueMember = "ProductID"
//    cmbProductCode.SelectedIndex = cmbProductCode.FindStringExact(pCode)
//    cmbProductCode.Text = pCode
//    cmbProductCode.DroppedDown = False


//End If
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void dgvPurchaseItems_CellValidating(System.Object sender, System.Windows.Forms.DataGridViewCellValidatingEventArgs e)
{
try {
DataGridView dgvPurchaseItems = (DataGridView)sender;
if ((dgvPurchaseItems.Columns(e.ColumnIndex) is DataGridViewComboBoxColumn)) {
DataGridViewComboBoxColumn comboBoxColumn = (DataGridViewComboBoxColumn)dgvPurchaseItems.Columns(e.ColumnIndex);
if ((!comboBoxColumn.Items.Contains(e.FormattedValue))) {
if ((ALLOW_ADDS)) {
//Beep() ' Audio confirmation that the item has been added (optional)
//comboBoxColumn.Items.Add(e.FormattedValue)
} else {
// How do we cancel?
e.Cancel = true;
}
}
} else {

}

} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void dgvPurchaseItems_DataError(System.Object sender, System.Windows.Forms.DataGridViewDataErrorEventArgs e)
{
try {
if (e.Exception != null) {
// checking Integer numbers

if (dgvPurchaseItems.Columns(e.ColumnIndex).ValueType.ToString() == "System.Int32") {
MessageBox.Show("Enter only Integer values ");
// checking decimal values 
} else if (dgvPurchaseItems.Columns(e.ColumnIndex).ValueType.ToString() == "System.Decimal") {
MessageBox.Show("Enter only numbers");
} else if (dgvPurchaseItems.Columns(e.ColumnIndex).ValueType.ToString() == "System.String") {
//MessageBox.Show("Enter only numbers")
} else {
MessageBox.Show("Enter correct format data. Different format data will not accept");

}
}
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}

private void dgvPurchaseItems_CellContentClick(System.Object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
try {
if (e.ColumnIndex == 11) {
int j = e.RowIndex;
POSCLayer.Purchaseitems data1 = new POSCLayer.Purchaseitems();

data1.PurchaseItemID = Convert.ToInt64(dgvPurchaseItems.Rows(j).Cells("PurchaseItemID").Value.ToString());
dynamic pid = POSBLayer.Purchaseitems.GetPurchaseItemID(data1.PurchaseItemID);
if (pid > 0) {
MessageBox.Show("Cannot delete.", "POS", MessageBoxButtons.OK, MessageBoxIcon.Information);
} else {
dynamic result = POSBLayer.Purchaseitems.Delete(data1.PurchaseItemID);
MessageBox.Show("Deleted successfully.", "POS", MessageBoxButtons.OK, MessageBoxIcon.Information);
FillGrid(PurchaseOrderID);
}

} else {
//If e.ColumnIndex = 11 Then
//    If PurchaseOrderID <> 0 Then

//        Dim j As Integer = e.RowIndex
//        Dim data1 As New POSCLayer.Purchaseitems

//        data1.PurchaseItemID = CLng(dgvPurchaseItems.Rows(j).Cells(8).Value.ToString())
//        data1.PurchaseOrderID = PurchaseOrderID
//        data1.ProductID = CLng(dgvPurchaseItems.Rows(j).Cells(9).Value.ToString())
//        data1.Quantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Quantity").Value.ToString())
//        data1.DamagedQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Damaged").Value.ToString())
//        data1.ExpiredQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Expired").Value.ToString())
//        data1.PurchasePrice = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("PurchaseRate").Value.ToString())
//        data1.SellingPrice = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("SellingRate").Value.ToString())
//        data1.CurrentQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Current").Value.ToString())
//        data1.CurrentLooseVolume = 0
//        data1.LooseQuantity = Decimal.Parse(dgvPurchaseItems.Rows(j).Cells("Loose").Value.ToString())
//        Dim result = POSBLayer.Purchaseitems.Save(data1)
//        MessageBox.Show("Saved successfully.",
//                                           "POS",
//                                           MessageBoxButtons.OK,
//                                           MessageBoxIcon.Information)
//        FillGrid(PurchaseOrderID)

//    End If
}
} catch (Exception ex) {
Utils.LogHandler.HandleError(ex);
}
}
public Purchases()
{
Load += Purchases_Load;
}

}