2017-04-13 62 views
0

我在嘗試將一個csv文件數據上傳到數據庫。 的過程是這樣的:如何在asp.net中維護一個表的狀態

我將csv文件數據提取到DataTable。

驗證DataTable字段。 如果一切正常,則將它們加載到數據庫中,然後單擊按鈕。

我通過在驗證按鈕單擊時傳遞保存的csv文件路徑,在下面的驗證方法中生成invTable。

protected void ValidateData_Click(object sender, EventArgs e) 
{ 
    ValidateCsv(); 
} 

private void ValidateCsv(string fileContent) 
{ 

    DataTable getCSVData; 
    getCSVData = GetData(fileContent); 
    invTable= Validate(getCSVData); 
} 

如果在BulkUpload_Click上加載它,invTable爲null。 理想情況下,它應該有數據,如ValidateCsv方法中所暗示的那樣。

protected void BulkUpload_Click(object sender, EventArgs e) 
    { 
     MatchedRecords(invTable); 
    } 

任何想法如何維護跨回發的invTable數據?

+0

「任何想法如何在回發保持invTable數據?」考慮添加發生的事情,就像你的桌子消失了一樣?什麼時候? – CurseStacker

+0

@CurseStacker是的,MatchedRecords(invTable); invTable變爲null。 – Harshit

+0

編輯你的問題,並從那裏詳細說明。哪行代碼引用了invTable並返回null錯誤? – CurseStacker

回答

0

將您的ValidateCsv更改爲函數。

private DataTable ValidateCsv(string fileContent) 
{ 

    DataTable getCSVData; 
    getCSVData = GetData(fileContent); 
    invTable = Validate(getCSVData); 

    return invTable; 
} 

然後在你的MatchedRecords,修改它接受一個DataTable參數。

private void MatchedRecords(DataTable invTable) { 

} 

然後在你的BulkUpload_Click事件,參考ValidateCsv,現在返回您DataTableMatchedRecords空值的函數。

protected void BulkUpload_Click(object sender, EventArgs e) 
{ 
    MatchedRecords(ValidateCsv('enter how you get the fileContent here...')); 
} 

或者

protected void BulkUpload_Click(object sender, EventArgs e) 
{ 
    DataTable valueTable = ValidateCsv('enter how you get the fileContent here...'); 
    MatchedRecords(valueTable); 
} 
+0

謝謝,yep這是另一種方式.ValidateCsv也調用GetData和Validate方法,這將是一個好的設計嗎?我的意思是築巢許多方法? – Harshit

+0

我不會說這是最好的設計,但函數被調用,所以我沒有看到任何問題從另一個函數內部調用它。 – CurseStacker