# How To: Kinetic - Upload a Client File, Parse, and Display in a Grid

**URL:** <https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749>\
**Category:** Experts' Corner\
**Tags:** kinetic, how-to, application-studio\
**Created:** [March 17, 2023, 3:23pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749 "2023-03-17T15:23:02Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![hmwillett](https://www.epiusers.help/user_avatar/www.epiusers.help/hmwillett/32/93207_2.png) [@hmwillett](https://www.epiusers.help/u/hmwillett)\
**Post date:** [March 26, 2025, 1:50pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/43 "2025-03-26T13:50:19Z")

</div>

![image](https://www.epiusers.help/uploads/default/original/3X/1/7/1721bcf5803678bc075c8290a52637dcc7704362.png)

---

<div class="post-metadata">

**Author:** ![Alex](https://www.epiusers.help/letter_avatar_proxy/v4/letter/a/db5fbb/32.png) [@Alex](https://www.epiusers.help/u/Alex)\
**Post date:** [March 26, 2025, 1:52pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/44 "2025-03-26T13:52:07Z")

</div>

@hmwillett I will guess i select Company and then i run tracing to see what is the path generated?

---

<div class="post-metadata">

**Author:** ![Mark\_Wonsil](https://www.epiusers.help/user_avatar/www.epiusers.help/mark_wonsil/32/51594_2.png) [@Mark\_Wonsil](https://www.epiusers.help/u/Mark_Wonsil)\
**Post date:** [March 26, 2025, 1:54pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/45 "2025-03-26T13:54:42Z")

</div>

You can also look at what @Epic_Santiago suggested to future-proof your cloud development by using the new file system sandbox commands.

> [@Transaction Scope Compiler Warning](https://www.epiusers.help/t/transaction-scope-compiler-warning/123417/28):
>
> Hi everyone, We have introduced some new warnings to verify that code is cross-platform. This is in preparation to moving to Linux for 2025.1. The warning was backported to 2024.2 to help identify such code prior to the upgrade. You can find examples of code that is not cross-platform (like the Windows registry) here: TransactionScope.Close() however is a false positive as this method is indeed portable. This has already been fixed and the warning should go away in the next build. Not direct…

---

<div class="post-metadata">

**Author:** ![Eslam\_Mohamed](https://www.epiusers.help/user_avatar/www.epiusers.help/eslam_mohamed/32/64911_2.png) [@Eslam\_Mohamed](https://www.epiusers.help/u/Eslam_Mohamed)\
**Post date:** [April 5, 2025, 10:25am UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/46 "2025-04-05T10:25:33Z")

</div>

@hmwillett  
If I’m uploading this csv to the kinetic screen ,can I use those rows to be added to something like quote lines? Like inserting the quote lines froma csv file , and if yes, how can I do that

---

<div class="post-metadata">

**Author:** ![ben.perkins](https://www.epiusers.help/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@ben.perkins](https://www.epiusers.help/u/ben.perkins)\
**Post date:** [April 16, 2025, 2:42pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/47 "2025-04-16T14:42:49Z")

</div>

This is a great tutorial—thanks for putting it together, @hmwillett!

Has anyone else experienced intermittent issues with the file-transfer widget? I’ve built (and rebuilt) a couple of layers on Order Entry due to a recurring bug. The goal is to upload a CSV using the file picker and then use the file to compare open orders against third-party customer order data using a BAQ and functions, returning the results to custom data views. The concept works well overall.

The issue I’m seeing is that the “File Picker Client” widget will randomly stop calling the `FileTransferSvc/UploadFile` method from my event. I noticed this because changes made to the CSV file prior to upload sometimes aren’t reflected—the function just uses the previously uploaded file.

When that happens, I can see the event is firing (confirmed via console), but the network trace shows no `FileTransferSvc/UploadFile` method call. I have a working layer, but ran into a separate issue, so I rebuilt it differently—solving one problem, but introducing another. Classic it seems for app studio.

I’ve tried deleting and re-adding the file picker and the related event, but the issue persists. It feels like the layer gets corrupted somehow, and the only reliable fix so far has been to start from scratch. Then it works… until it doesn’t.

Working network trace:  
 ![image](https://www.epiusers.help/uploads/default/original/3X/5/e/5ed62068f7956a762e206d06ef2875f42864a918.png)

Not working trace:  
 ![image](https://www.epiusers.help/uploads/default/original/3X/6/5/6560e88ae8e07f42aa096ea9be27611d046ef195.png)

Event configuration for both layers (identical):

 ![image](https://www.epiusers.help/uploads/default/original/3X/8/7/87c61cd3c15521b22f1ffc98ee370cbd5ccd47e0.png)

---

<div class="post-metadata">

**Author:** ![aosemwengie1](https://www.epiusers.help/user_avatar/www.epiusers.help/aosemwengie1/32/95533_2.png) [@aosemwengie1](https://www.epiusers.help/u/aosemwengie1)\
**Post date:** [April 16, 2025, 2:46pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/48 "2025-04-16T14:46:05Z")

</div>

What’s in your condition? What does the network trace show when you click that button and it doesn’t work?

---

<div class="post-metadata">

**Author:** ![ben.perkins](https://www.epiusers.help/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@ben.perkins](https://www.epiusers.help/u/ben.perkins)\
**Post date:** [April 16, 2025, 2:50pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/49 "2025-04-16T14:50:53Z")

</div>

Sorry, mean to include the console trace as well. The condition is simply making sure the filename uploaded to the picker matches what we expect it to be.

 ![image](https://www.epiusers.help/uploads/default/original/3X/4/e/4e1bb67ebe85da162a5a002b0b6d0f563b54cfdf.png)

---

<div class="post-metadata">

**Author:** ![aosemwengie1](https://www.epiusers.help/user_avatar/www.epiusers.help/aosemwengie1/32/95533_2.png) [@aosemwengie1](https://www.epiusers.help/u/aosemwengie1)\
**Post date:** [April 16, 2025, 2:54pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/50 "2025-04-16T14:54:20Z")

</div>

The bottom of that screenshot looks like it is calling the function after the condition evaluates to true? What does the network trace show?

---

<div class="post-metadata">

**Author:** ![ben.perkins](https://www.epiusers.help/letter_avatar_proxy/v4/letter/b/ecc23a/32.png) [@ben.perkins](https://www.epiusers.help/u/ben.perkins)\
**Post date:** [April 16, 2025, 3:03pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/51 "2025-04-16T15:03:12Z")

</div>

Yes, the sequence in the event is to evaluate file name, if file name is correct, proceed with file upload, then call function which uses server file to complete comparison. The network trace is in my original post, the difference being that the working layer calls the “FileTransferSvc/UploadFile” method, then the function. The non-working layer just immediately calls the function without executing the upload method.

---

<div class="post-metadata">

**Author:** ![aosemwengie1](https://www.epiusers.help/user_avatar/www.epiusers.help/aosemwengie1/32/95533_2.png) [@aosemwengie1](https://www.epiusers.help/u/aosemwengie1)\
**Post date:** [April 17, 2025, 11:33am UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/52 "2025-04-17T11:33:33Z")

</div>

Yeah I don’t know, something isn’t adding up. Either there is a difference in the layer, or that condition is being evaluated differently or something. I have seen a lot of times where my events do get corrupted/randomly disappear. Sometimes closing and reopening the event it looks totally different and what I saw on the screen wasn’t actually what was executing at all.

---

<div class="post-metadata">

**Author:** ![Joel\_Bailie](https://www.epiusers.help/letter_avatar_proxy/v4/letter/j/c37758/32.png) [@Joel\_Bailie](https://www.epiusers.help/u/Joel_Bailie)\
**Post date:** [May 15, 2025, 3:51pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/53 "2025-05-15T15:51:58Z")

</div>

This is good but when I try to use it in my situation I get this. Feature ‘using declarations’ not available in C# 7.2. Do I need to do something in order to use StreamReader and such?

---

<div class="post-metadata">

**Author:** ![aosemwengie1](https://www.epiusers.help/user_avatar/www.epiusers.help/aosemwengie1/32/95533_2.png) [@aosemwengie1](https://www.epiusers.help/u/aosemwengie1)\
**Post date:** [May 15, 2025, 3:54pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/54 "2025-05-15T15:54:36Z")

</div>

> [@Joel\_Bailie](#):
>
> Feature ‘using declarations’ not available in C# 7.2.

Have you read the info on the sandbox method?  
 ![image](https://www.epiusers.help/uploads/default/original/3X/5/e/5e0a6cb6a84381d643f3fd432a5346daebceeca5.png)

---

<div class="post-metadata">

**Author:** ![klincecum](https://www.epiusers.help/user_avatar/www.epiusers.help/klincecum/32/100137_2.png) [@klincecum](https://www.epiusers.help/u/klincecum)\
**Post date:** [May 15, 2025, 3:56pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/55 "2025-05-15T15:56:51Z")

</div>

usings go on the `Usings` tab in the editor.

---

<div class="post-metadata">

**Author:** ![Joel\_Bailie](https://www.epiusers.help/letter_avatar_proxy/v4/letter/j/c37758/32.png) [@Joel\_Bailie](https://www.epiusers.help/u/Joel_Bailie)\
**Post date:** [May 15, 2025, 4:03pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/56 "2025-05-15T16:03:09Z")

</div>

I am working with an Epicor Kinetic function in a Library. I don’t see a Usings tab. Is it in here and I am just missing it?

---

<div class="post-metadata">

**Author:** ![hmwillett](https://www.epiusers.help/user_avatar/www.epiusers.help/hmwillett/32/93207_2.png) [@hmwillett](https://www.epiusers.help/u/hmwillett)\
**Post date:** [May 15, 2025, 4:05pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/57 "2025-05-15T16:05:26Z")

</div>

It’s in the code editor.

 ![image](https://www.epiusers.help/uploads/default/original/3X/3/e/3ecdfaade899f00501d5def466774a2f9a61498e.png)

---

<div class="post-metadata">

**Author:** ![Joel\_Bailie](https://www.epiusers.help/letter_avatar_proxy/v4/letter/j/c37758/32.png) [@Joel\_Bailie](https://www.epiusers.help/u/Joel_Bailie)\
**Post date:** [May 15, 2025, 5:58pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/58 "2025-05-15T17:58:08Z")

</div>

Thanks for the info. I don’t have this though so I don’t know what to do.

---

<div class="post-metadata">

**Author:** ![hmwillett](https://www.epiusers.help/user_avatar/www.epiusers.help/hmwillett/32/93207_2.png) [@hmwillett](https://www.epiusers.help/u/hmwillett)\
**Post date:** [May 15, 2025, 6:04pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/59 "2025-05-15T18:04:55Z")

</div>

It would be helpful if you showed us what you actually _do_ have instead of everyone trying to guess.

---

<div class="post-metadata">

**Author:** ![Joel\_Bailie](https://www.epiusers.help/letter_avatar_proxy/v4/letter/j/c37758/32.png) [@Joel\_Bailie](https://www.epiusers.help/u/Joel_Bailie)\
**Post date:** [May 15, 2025, 7:06pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/60 "2025-05-15T19:06:46Z")

</div>

the issue is I can’t get my Stream Reader to work and no where to set a using [System.IO](http://System.IO).

![image](https://www.epiusers.help/uploads/default/original/3X/5/b/5b7459c50eadba9dd81b9a8c8489d75239957730.png)

I’m even spelling it out.  
 ![image](https://www.epiusers.help/uploads/default/original/3X/7/1/710e9b4232d64b7d6c97855ceb4580ec4e6d205d.png)

but don’t see where to define the using [System.IO](http://System.IO)

 ![image](https://www.epiusers.help/uploads/default/original/3X/5/2/526c1f7e4929546f8f89f2c12c6941a2638fb48e.png)

---

<div class="post-metadata">

**Author:** ![hmwillett](https://www.epiusers.help/user_avatar/www.epiusers.help/hmwillett/32/93207_2.png) [@hmwillett](https://www.epiusers.help/u/hmwillett)\
**Post date:** [May 15, 2025, 7:12pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/61 "2025-05-15T19:12:39Z")

</div>

![image](https://www.epiusers.help/uploads/default/original/3X/7/a/7ab2785744ed158d37bf65005ff58664ae45fb13.png)

You’re not getting an error. You’re getting a warning.  
This is because the cloud is moving to a Linux container soon.

---

<div class="post-metadata">

**Author:** ![Joel\_Bailie](https://www.epiusers.help/letter_avatar_proxy/v4/letter/j/c37758/32.png) [@Joel\_Bailie](https://www.epiusers.help/u/Joel_Bailie)\
**Post date:** [May 15, 2025, 11:44pm UTC](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749/62 "2025-05-15T23:44:41Z")

</div>

When I try to instantiate a StreamReader it doesn’t do it. I know this because I have a message immediately after and it never shows. I just want to read my csv file, line by line and apply it to a Grid Data Source.

[Previous page](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749.md?page=2)

[Next page](https://www.epiusers.help/t/how-to-kinetic-upload-a-client-file-parse-and-display-in-a-grid/100749.md?page=4)
