C# 使用<;结构>;作为listview的数据源,将显示object.tostring()而不是DisplayMember
使用struct列表作为Listbox的数据源,我将从struct获取Object.ToString()而不是预期的字段值 在设置DisplayMember之后,当我将DataTable指定为数据源时,这工作正常 然而,我想尝试使用一个struct列表(int ID,String Name),尽管在将数据源分配给列表之前已将DisplayMember设置为“Name”,我还是得到了row对象.toString() 任何帮助都会很棒 在表单加载时:C# 使用<;结构>;作为listview的数据源,将显示object.tostring()而不是DisplayMember,c#,C#,使用struct列表作为Listbox的数据源,我将从struct获取Object.ToString()而不是预期的字段值 在设置DisplayMember之后,当我将DataTable指定为数据源时,这工作正常 然而,我想尝试使用一个struct列表(int ID,String Name),尽管在将数据源分配给列表之前已将DisplayMember设置为“Name”,我还是得到了row对象.toString() 任何帮助都会很棒 在表单加载时: private void frmTest
private void frmTestProof_Load(object sender, EventArgs e)
{
TestMaker tm = new TestMaker();
tm.LoadMakersToListbox(ref lstboxMaker);
}
类TestMaker
{
公共结构生成记录
{
公共设施;
公共字符串MakerName;
公共MakerRecord(整数ID,字符串名称)
{
MakerID=ID;
MakerName=名称;
}
}
公共SQLiteConnection-DBconn;
公共字符串thisPath=“”;
public SQLiteCommand sqlCommand=new SQLiteCommand();
公共数据集dsMaker=新数据集();
public SQLiteDataAdapter daMaker=new SQLiteDataAdapter();
公共TestMaker()
{
thisPath=“c:\\sqlite\\abc.db”;
DBconn=newsqliteconnection(String.Format(“数据源={0};版本=3;”,thisPath));
DBconn.Open();
sqlCommand.Connection=DBconn;
sqlCommand.CommandType=CommandType.Text;
}
公共列表GetListOfMakers()
{
List makerList=新列表();
String sqlMaker=“从VehicleMakerName不为NULL的VehicleMakerName中选择ID,VehicleMakerName”
;
sqlCommand.CommandText=sqlMaker;
daMaker.SelectCommand=sqlCommand;
尝试
{
daMaker.Fill(dsMaker,“制造商”);
makerList=(来自dsMaker.Tables[“Makers”].AsEnumerable()中的项)
选择新建MakerRecord()
{
MakerID=Convert.ToInt32(项[“ID”]),
MakerName=item[“VehicleMakerName”]。ToString()
}).ToList();
}
捕获(例外情况除外)
{
Show(String.Format(“制造者列表-错误({0})”,例如Message));
}
返回makerList;
}
公共无效LoadMakersToListbox(参考列表框lb)
{
lb.Items.Clear();
lb.ValueMember=“MakerID”;
lb.DisplayMember=“MakerName”;
lb.DataSource=GetListOfMakers();
}
}
更改
公共字符串MakerName
topublic string MakerName{get;set;}
和public int MakerName
到public int MakerID{get;set;}
更改公共字符串MakerName
topublic string MakerName{get;set;}
和public int MakerName代码>到公共intmakerid{get;set;}
当然。谢谢你@Tyres。。我真的不应该尝试在凌晨3点编写代码……:)再次谢谢你。@James别想了,我们中最好的人都会这样:)谢谢如果你有时间,也许你可以帮我结账。当然可以。谢谢你@Tyres。。我真的不应该尝试在凌晨3点编写代码……:)再次谢谢你。@James别想了,我们中最好的人都会这样:)谢谢如果你有时间,也许你可以帮我结账。
class TestMaker
{
public struct MakerRecord
{
public int MakerID;
public String MakerName;
public MakerRecord(int ID, String Name)
{
MakerID = ID;
MakerName = Name;
}
}
public SQLiteConnection DBconn;
public String thisPath = "";
public SQLiteCommand sqlCommand = new SQLiteCommand();
public DataSet dsMaker = new DataSet();
public SQLiteDataAdapter daMaker = new SQLiteDataAdapter();
public TestMaker()
{
thisPath = "c:\\sqlite\\abc.db";
DBconn = new SQLiteConnection(String.Format("Data Source={0};Version=3;", thisPath));
DBconn.Open();
sqlCommand.Connection = DBconn;
sqlCommand.CommandType = CommandType.Text;
}
public List<MakerRecord> GetListOfMakers()
{
List<MakerRecord> makerList = new List<MakerRecord>();
String sqlMaker = "SELECT ID, VehicleMakerName FROM VehicleMakers WHERE VehicleMakerName IS NOT NULL"
;
sqlCommand.CommandText = sqlMaker;
daMaker.SelectCommand = sqlCommand;
try
{
daMaker.Fill(dsMaker, "Makers");
makerList = (from item in dsMaker.Tables["Makers"].AsEnumerable()
select new MakerRecord()
{
MakerID = Convert.ToInt32(item["ID"]),
MakerName = item["VehicleMakerName"].ToString()
}).ToList();
}
catch (Exception ex)
{
MessageBox.Show(String.Format("List of Makers - Error ({0})", ex.Message));
}
return makerList;
}
public void LoadMakersToListbox(ref ListBox lb)
{
lb.Items.Clear();
lb.ValueMember = "MakerID";
lb.DisplayMember = "MakerName";
lb.DataSource = GetListOfMakers();
}
}