In data grid there are two fields one is itemcombox and another one is quantity(this is Grid text box type). All the items will be listed in itemcombo box which will come from database item field, this I have done already. My requirement is user can select many items and can enter quanity values in the grid cell. And these items and quantity will be saved in database table. In my code its saving only last row. Pls help somebody to achieve this.
private void
btnSave_Click(object sender, EventArgs e)
{
CompanyKey companyKey;
Context context;
SalesBackorder salesBackorder;
Policy salesBackorderCreatePolicy;
// Create an instance of the service
DynamicsGP wsDynamicsGP = new DynamicsGP();
// Be sure the default credentials are used
wsDynamicsGP.UseDefaultCredentials = true;
// Create a context with which to call the service
context = new Context();
// Specify which company to use (sample company)
companyKey = new CompanyKey();
companyKey.Id = (-1);
// Set up the context object
context.OrganizationKey = (OrganizationKey)companyKey;
// Create a sales backorder object
salesBackorder = new SalesBackorder();
// Create a document type key for the sales backorder
SalesDocumentTypeKey salesBackorderType = new
SalesDocumentTypeKey();
salesBackorderType.Type = SalesDocumentType.Backorder;
// Populate the document type key of the sales
backorder object
salesBackorder.DocumentTypeKey = salesBackorderType;
// Create a sales backorder line to specify the backordered item
SalesBackorderLine salesBackorderLine = new SalesBackorderLine();
// Create an item key
ItemKey itemKey = new ItemKey();
itemKey.Id = itemnumber;
// Populate the item key property of the sales invoice line object
salesBackorderLine.ItemKey = itemKey;
// Create a sales backorder quantity object
Quantity backorderCount = new Quantity();
backorderCount.Value = Convert.ToDecimal(quantity);
// Populate the quantity of the sales backorder line object
salesBackorderLine.Quantity = backorderCount;
//SalesBackorderLine[]
backorderLines = { salesBackorderLine };
// Add the sales backorder line array to the sales backorder
object
//salesBackorder.Lines = backorderLines;
try
{
Note: I know here I should loop thru….
Like…
for (int counter = 0; counter
< (CreateSalesBackOrderGrid.Rows.Count); counter++)
{
Note: I am not clear
how to handle this part. Pls help with this part.
//Get the create policy for sales backorder objects
salesBackorderCreatePolicy =
wsDynamicsGP.GetPolicyByOperation("CreateSalesBackorder", context);
// Create the sales backorder
wsDynamicsGP.CreateSalesBackorder(salesBackorder, context,
salesBackorderCreatePolicy);
}
for (int i = 0; i <= CreateSalesBackOrderGrid.Rows.Count - 1;
i++)
{
CreateSalesBackOrderGrid.Rows[i].Cells.Clear();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
//SalesBackorderLine[] backorderLines = { salesBackorderLine }; // Add the sales backorder line array to the sales backorder object //salesBackorder.Lines = backorderLines; then only last
row will be added otherwise in above code nothing will be saved….i have problem
with the for loop before calling the insert method.
Manikavelu VelayuthamPosted Sep 24, 2010, 7:27 AM
You can also check it through Profiler, just see how many times it hits the database for saving the values.
If its gone for only once, then the problem is in the fron end.
If its gone for several time, just check whether the same row is updated again and again