Mates,我遇到了一些问题,我正在使用Entity Framework,并且在textchange事件中我必须过滤记录并且必须使用autocompleteSource进行分配,但我不知道为什么应用程序崩溃了,我已搜索但是仍未找到硕果累累的结果。请帮忙。这是代码:
AutoCompleteStringCollection ChartCollection = new AutoCompleteStringCollection();
txtChartNo.AutoCompleteCustomSource.Clear();
if (txtChartNo.Text.Trim() != string.Empty &&
Convert.ToString(txtChartNo.Text.Trim()).Length > 0)
{
List<Patient> pat =
PatientManager
.GetByChartNoForAutoComplete(Convert.ToString(txtChartNo.Text))
.ToList();// fetching data from db using EF
if (pat.Count > 0)
{
pat.ForEach(f =>
{
ChartCollection.Add(f.ChartNo + " - " + f.FullName);
});
txtChartNo.AutoCompleteCustomSource = ChartCollection;
}
}
答案 0 :(得分:0)
由于没有异常消息,我可以指出您可能在此代码中遇到的两个潜在问题。
首先,pat
集合可能是null
。如果是这样的话,任何操作都将导致NullReferenceException
。防范null
将是充分的补救措施。
if (pat != null && pat.Count > 0)
{
// any operation on pat collection.
}
第二种可能性是您可以在访问集合之前处理数据上下文。我在GetByChartNoForAutoComplete
方法中猜测你调用using
块内的数据上下文。如果在块中,您也不要调用ToList()
,那么实际上您不会获取数据。您的代码在您的代码段中调用ToList
时尝试检索数据,但此时数据上下文已经处理完毕。
这两项建议都有点远,但由于信息非常有限,你提供的建议很难提供更精确的建议。
作为旁注,有很多地方可以改进您的代码。 TextBox.Text
不需要转换为字符串。另外,要检查字符串是否为空,请使用string.IsNullOrEmpty
。