Python CLR(IronPython)中WinForms ComboBox显示DataRowView而非值的解决方法
解决WinForms ComboBox显示DataRowView而非实际数据的问题
问题出在你只设置了ComboBox的DataSource,但没指定要显示的列名。当数据源是DataTable时,ComboBox默认会调用DataRowView的ToString()方法,所以显示的是对象本身而不是实际数据。
修改步骤:
在设置DataSource之后,添加DisplayMember(指定显示的列)和ValueMember(可选,指定选中项对应的值列)的配置:
def LoadDensityComboBox(self, Query): self.PopulateData(Query) # Load the data into the DensityName combobox self.cboDensityName.DataSource = self.data_table # 替换成你查询结果中要显示的列名,比如"DensityName" self.cboDensityName.DisplayMember = "你的显示列名" # 可选:替换成你需要关联的值列名,比如"DensityID" self.cboDensityName.ValueMember = "你的值列名" print(type(self.cboDensityName.DataSource))
额外注意:
你的PopulateData方法里,finally块中的sqlConn.Close少了括号,未实际执行关闭操作,应改为:
finally: if sqlConn.State == ConnectionState.Open: sqlConn.Close() # 加括号调用关闭方法
这样ComboBox就会显示指定列的实际数据,而不是System.Data.DataRowView对象了。
内容的提问来源于stack exchange,提问作者EricALionsFan
相关产品推荐
相关产品推荐

