2017-04-13 59 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