我目前正在为gravesite的访问者信息站开发一个应用程序,其中一个功能从csv文件中提取数据并使用所述数据来填充列表视图。下面的代码是获取数据并将其返回到列表类型严重程度的代码。从ApplicationData.Current.LocalFolder切换到Knownfolders.DocumentsLibrary
public class Grave
{
public string plots { get; set; }
public string DOBS { get; set; }
public string lastNames { get; set; }
public string firstNames { get; set; }
public string companys { get; set; }
public string regts { get; set; }
public string unitTypes { get; set; }
public string states { get; set; }
public string ranks { get; set; }
public string sections { get; set; }
public string image { get; set; }
public string text { get; set; }
public string notenums { get; set; }
}
public class GraveManager
{
public static List<Grave> GetGrave()
{ //points to desired folder
StorageFolder folder = ApplicationData.Current.LocalFolder;
string csvPath = folder.Path + @"\PGexcel.csv";
//loads .csv file from folder
Csv csv = new Csv();
//property that tells csv parser to not treat the first row as data
csv.HasColumnNames = true;
bool success1;
success1 = csv.LoadFile(csvPath);
//name of columns
string plot = "Plot", DOB = "Date_of_Death", lastName = "Last_Name", firstName = "First_Name", company = "Company", regt = "Regt", state = "State", unitType = "Unit_Type", Rank = "Rank", Section = "Section", Notables= "Notables";
//initialize string of arrays for each column
string[] OCplots = new string[csv.NumRows];
string[] OCDOBS = new string[csv.NumRows];
string[] OClastNames = new string[csv.NumRows];
string[] OCfirstNames = new string[csv.NumRows];
string[] OCcompanys = new string[csv.NumRows];
string[] OCregts = new string[csv.NumRows];
string[] OCunitTypes = new string[csv.NumRows];
string[] OCstates = new string[csv.NumRows];
string[] OCranks = new string[csv.NumRows];
string[] OCsections = new string[csv.NumRows];
string[] OCimage = new string[csv.NumRows];
string[] OCtext = new string[csv.NumRows];
string[] OCnotenums = new string[csv.NumRows];
//populates the arrays with values from .csv file
for (int i = 0; i < csv.NumRows; i++)
{
OCplots[i] = csv.GetCellByName(i, plot);
OCDOBS[i] = csv.GetCellByName(i, DOB);
OClastNames[i] = csv.GetCellByName(i, lastName);
OCfirstNames[i] = csv.GetCellByName(i, firstName);
OCcompanys[i] = csv.GetCellByName(i, company);
OCregts[i] = csv.GetCellByName(i, regt);
OCunitTypes[i] = csv.GetCellByName(i, unitType);
OCranks[i] = csv.GetCellByName(i, Rank);
OCsections[i] = csv.GetCellByName(i, Section);
OCstates[i] = csv.GetCellByName(i, state);
OCnotenums[i] = csv.GetCellByName(i, Notables);
}
//concantenate arrays with .jpg .txt to call for corresponding files
for (int i = 0; i < csv.NumRows; i++)
{
//OCimage[i] = "C:/Users/POGR_ADMIN/AppData/Local/Packages/6b3614f6-6a5f-48fc-9687-80291e70b64d_phwtyg9y34v1t/LocalState/" + OCplots[i] + ".jpg";
OCimage[i] = folder.Path + @"\" + OCplots[i] + ".jpg";
OCtext[i] = folder.Path + @"\"+ OCplots[i] + ".txt";
}
var graves = new List<Grave>();
//attempt to populate List using the for loop
for (int i = 0; i < csv.NumRows; i++)
{
graves.Add(new Grave { plots= OCplots[i], DOBS = OCDOBS[i], lastNames = OClastNames[i], firstNames = OCfirstNames[i], companys = OCcompanys[i], regts = OCregts[i], states = OCstates[i], unitTypes = OCunitTypes[i],ranks = OCranks[i], sections = OCsections[i], image = OCimage[i], text = OCtext[i], notenums = OCnotenums[i] });
}
return graves;
}
}
我那么另一页上初始化列表类型的坟墓,并通过调用方法时调用构造函数填充它。这是显示在这里:
public List<Grave> Graves;
public FindaGrave()
{
this.InitializeComponent();
GraveInitializer();
}
public void GraveInitializer()
{
Graves = GraveManager.GetGrave();
}
此代码工作完美和罚款,并完全填充listview我如何设想。但是,我注意到,csv文件中有许多错误,他们发现并计划由于人为错误而找到这些错误。据说,他们希望能够对csv文件进行更改,并且在重新加载应用程序(没有任何帮助)后显示更改。由于当地国家的文件夹被包装我认为应该做的唯一方式,以便将改变 StorageFolder folder = ApplicationData.Current.LocalFolder;
为StorageFolder folder = KnownFolders.DocumentsLibrary;
我觉得,如果我确信该文件是文档库中,增加了功能,在应用程序包的清单像<uap:Capability Name="documentsLibrary" />
这样,并添加相应的文件类型关联,它应该工作相同。但是,当我运行它时,列表不再显示出来,并且在我稍微调试一下后,folder.Path
和string csvPath
的值就不再等于“\ PGexcel.csv”。我完全失去了,因为我认为会是一个快速解决方案最终成为一件非常困难的事情,而且我是UWP的新手,所以没有任何帮助。我查找了几天,无法找到解决方案,对此问题的任何帮助将不胜感激。你会成为一个拯救生命的人!
之前我们要潜入你的问题。您是否知道文件夹的功能受到限制,如果想要提交给商店,最好不要使用它?来源:https://msdn.microsoft.com/en-us/windows/uwp/packaging/app-capability-declarations –
我明白,最好不要使用它,但这个应用程序将被侧载,并不会有去商店,所以它真的没关系。@DaveSmits –