[英]Class is showing up in Listbox and not the actual string value
首先,這就是正在發生的事情。
當我從組合框中從數據庫中選擇一個表時,我希望所有列名都顯示出來(列名是“ P101”,“ P102”等。),但是我還希望每個列的擴展屬性值出現由於某種原因未顯示的情況。
這是我在C#中的SP:
[Function(Name = "SP_GET_EXTENDED_PROPERTY", IsComposable = false)]
public ISingleResult<StandardDefinition> GetExtendedProperty(
[Parameter(Name = "@ptableName", DbType = "VARCHAR(50)")] string tableName,
[Parameter(Name = "@pcolumnName", DbType = "VARCHAR(50)")] string columnName)
{
IExecuteResult objResult = this.ExecuteMethodCall(this, (MethodInfo)(MethodInfo.GetCurrentMethod()),tableName, columnName);
ISingleResult<StandardDefinition> objresults = (ISingleResult<StandardDefinition>)objResult.ReturnValue;
return objresults;
}
該存儲過程鏈接到SQL中的此查詢(該查詢已經過測試並且可以工作):
SELECT value as _value FROM fn_listextendedproperty
(NULL, 'schema', 'dbo', 'table', 'Acceptance', 'column', 'P101');
我傳遞的列名和表名是正確的,並且在調試后可以正常工作,並且SQL中的查詢是正確的,因此我不知道出了什么問題,這是我選擇組合框的C#代碼。
foreach (StandardDefinition standardDefinition in _StandardFields)
{
_wrapperSD = new WrapperStandardDefinition(Properties.Settings.Default.AppConnectionString,standardName,standardDefinition.Column_name);
_SD = _wrapperSD.GetStandardQuestion();
lstQuestions.Items.Add(string.Format("{0} ( {1} ) ", _standardDefinition, standardDefinition.Column_name));
}
public ISingleResult<StandardDefinition> GetStandardQuestion()
{
_SP = new StoredProcedures(_connection);
return _SP.GetExtendedProperty(_selectedStandard, _columnName);
}
這行在這里:
lstQuestions.Items.Add(string.Format("{0} ( {1} ) ", _standardDefinition, standardDefinition.Column_name));
.ToString()
作為參數傳遞給string.Format()
時,會在_standardDefinition
上隱式調用。 我相信這就是給你班級名稱的原因。
如果希望它返回不同的值,則可以覆蓋該類中的.ToString()
方法。 或者,您可以傳入所需的值,例如_standardDefinition.MyPropertyWithDesiredValue
,而不是對象本身。
您正在將自定義StandardDefinition
對象傳遞給Framework進行顯示,但您尚未告訴它如何顯示它,因此WPF使用該類型的名稱:
DAL.Entities.StandardDefinition
顯示更有意義的內容的最快,最簡單的方法是簡單地覆蓋object.ToString
方法,因為這是WPF默認情況下嘗試使用的方法。 因此,如果您要執行以下操作...:
public override string ToString()
{
return string.Format("{0}: {1}", SomeProperty, SomeOtherProperty);
}
...您的輸出可能是這樣的:
Some value: some other value
對於文本輸出而言,這可能會很好,但是改善這些項目的顯示的另一種方法是讓您聲明一個DataTemplate
,該DataTemplate
定義每個項目的外觀。 您可以這樣做:
<DataTemplate DataType="{x:Type Entities:StandardDefinition}">
<!-- Define what the item should look like here -->
</DataTemplate>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.