我正在尝试获取ListView中的所有项目,并将每个项目写入字符串数组(或类似内容)中的新行。这样我就可以将这些值传递给对象内的字符串属性,然后将其保存到SQL数据库(Varchar(max))。
我试过的是什么?
public string ConvertToString(ListView l)
{
ArrayList list = new ArrayList();
foreach (string item in l.Items)
{
list.Add(item);
}
return list.ToString();
}
但我显然错过了我正在努力解决的换行问题。 当前代码仅将“System.Collections.ArrayList”保存到数据库中。
我也做了很多谷歌搜索并继续遇到“string []”但这没有什么好处,因为我必须预定义长度,我不知道,因为当项目被添加到ListView时它会不断变化。
从数据库读取值时,我还需要一个反向方法,将每一行放回ListView。
非常感谢任何帮助。
答案 0 :(得分:2)
StringBuilder完美地保存了CR / LF字符。
public string ConvertToString(ListView l)
{
StringBuilder list = new StringBuilder();
foreach (string item in l.Items)
list.AppendLine(item);
return list.ToString();
}
反向类似:
public voidConvertToString(ListView l, string dbString)
{
string [] sep = {"\r\n"};
foreach (string item in dbString.Split(sep, StringSplitOptions.None))
l.Items.Add(item);
}
答案 1 :(得分:0)
我实现了这个函数来转换为String数组:
/// <summary>
/// Convert a ListView to an array of string
/// </summary>
/// <param name="ListView1"></param>
/// <returns>an array of strings</returns>
private string[] ConvertToArray(ListView ListView1)
{
string[] array = new string[ListView1.Items.Count];
for (int i = 0; i <= ListView1.Items.Count - 1; i++)
{
array[i] = ListView1.Items[i].Text;
}
return array;
}
反向解决方案可能类似。