当在 c# Xamarin 上显示来自 db 的 ListView 数据时,有没有办法从屏幕中删除 System.Collection.Generic 消息而不是字符串
Posted
技术标签:
【中文标题】当在 c# Xamarin 上显示来自 db 的 ListView 数据时,有没有办法从屏幕中删除 System.Collection.Generic 消息而不是字符串【英文标题】:Is there a way to remove System.Collection.Generic message from screen instead of string when display ListView data from db on c# Xamarin 【发布时间】:2021-03-07 17:32:57 【问题描述】:我希望当用户单击我的第一个 listView 时显示第二个 listview 与来自数据库的不同数据,但我看到此消息:"System.Collections.Generic.List'1[System..."
当我使用调试器时,一切都很好..我从日期库中看到数据..
我的第二个列表视图如下所示:
<StackLayout>
<ListView x:Name="MeteoView"
ItemsSource="Binding Forecast"
HeightRequest="100"
IsVisible="false">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell
Text="Binding DisplayRun" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
我的c#代码连接db,执行过程并显示数据如下:
public class ForecastData
public string DisplayRun get; set;
ObservableCollection<ForecastData> MeteoData = new ObservableCollection<ForecastData>();
public ObservableCollection<ForecastData> Forecast get return MeteoData;
void listView_ItemSelected(System.Object sender, Xamarin.Forms.SelectedItemChangedEventArgs e)
string str = ((Contacts)listView.SelectedItem).Place;
string substr = str.Substring(str.Length - 5);
searchBar.Placeholder = str;
server = "ip-to-db";
database = "db-name";
uid = "user";
password = "pass";
string connectionString;
connectionString = "SERVER=" + server + ";" + "DATABASE=" +
database + ";" + "UID=" + uid + ";" + "PASSWORD=" + password + ";";
connection = new mysqlConnection(connectionString);
List<string> Run = new List<string>();
try
connection.Open();
var cmd = new MySqlCommand();
cmd.Connection = connection;
MySqlCommand command = new MySqlCommand($"CALL `get_all_data`(substr)", connection);
MeteoView.IsVisible = true;
MeteoView.ItemsSource = MeteoData;
using (MySqlDataReader reader = command.ExecuteReader())
while (reader.Read())
Run.Add(reader[0].ToString());
MeteoData.Add(new ForecastData DisplayRun = $"Run" );
connection.Close();
catch (Exception ex)
LabelSQL.Text = (ex.ToString());
所以在我的显示模拟器上,我在 listView 中看到了这个:
listView
Debugger
【问题讨论】:
【参考方案1】:这与您今天早些时候提出的问题基本相同。默认情况下ToString
将返回类的名称。您正在将 DisplayRun
设置为 List<string>
的内容
List<string> Run = new List<string>();
Run.Add(reader[0].ToString());
MeteoData.Add(new ForecastData DisplayRun = $"Run" );
基本相同
DisplayRun = Run.ToString();
【讨论】:
你的回答将如何帮助我解决同样的问题? 我正在解释为什么会这样。我无法告诉您如何解决它,因为我对您的要求或您正在使用的数据一无所知。本质上,您试图在 单个标签 中显示 List 数据,这通常是行不通的。我怀疑你真正想要的是MeteoData.Add(new ForecastData DisplayRun = reader[0].ToString() );
,但这只是猜测以上是关于当在 c# Xamarin 上显示来自 db 的 ListView 数据时,有没有办法从屏幕中删除 System.Collection.Generic 消息而不是字符串的主要内容,如果未能解决你的问题,请参考以下文章
C# Xamarin 没有收到来自 HttpClient 的响应
在 Xamarin C# 中选择对 Sqlitie DB 的异步原始查询的问题