【发布时间】:2015-10-04 03:31:41
【问题描述】:
我有 2 个组合框,我正在用 Linq 填充它们。
第一个是名为“City selection”的组合框:[Displaymember: CityName, Value: CityID(int)]
当用户从第一个组合框中选择一个值时,我想按 CityID 过滤我的第二个组合框。
第二个组合框名为“部门选择”。
这是代码,但它不起作用。最后一个代码块出现错误。
private void cb_Bolge_MouseHover(object sender, EventArgs e)
{
cb_Bolge.DataSource = k.tbl_Bolges;
cb_Bolge.DisplayMember = "Bolge_Ad";
cb_Bolge.ValueMember = "Bolge_ID";
}
private void cb_Bolge_ValueMemberChanged(object sender, EventArgs e)
{
cb_Departman.DataSource = k.tbl_Departmans.Where(p=>p.Bolge_ID == Convert.ToInt32(cb_Bolge.ValueMember));
cb_Departman.DisplayMember = "Departman_Ad";
cb_Departman.ValueMember = "Departman_ID";
}
这里是错误代码(抱歉有些默认是土耳其语):
System.FormatException was unhandled
HResult=-2146233033
Message=Giriş dizesi doğru biçimde değildi.
Source=System.Data.Linq
StackTrace:
konum: System.Data.Linq.SqlClient.QueryConverter.VisitInvocation(InvocationExpression invoke)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitExpression(Expression exp)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitBinary(BinaryExpression b)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitExpression(Expression exp)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitWhere(Expression sequence, LambdaExpression predicate)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitSequenceOperatorCall(MethodCallExpression mc)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitMethodCall(MethodCallExpression mc)
konum: System.Data.Linq.SqlClient.QueryConverter.VisitInner(Expression node)
konum: System.Data.Linq.SqlClient.QueryConverter.ConvertOuter(Expression node)
konum: System.Data.Linq.SqlClient.SqlProvider.BuildQuery(Expression query, SqlNodeAnnotations annotations)
konum: System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
konum: System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
konum: System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
konum: System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
konum: System.Data.Linq.Provider.BindingList.Create[T](DataContext context, IEnumerable`1 sequence)
konum: System.Data.Linq.DataQuery`1.GetNewBindingList()
konum: System.Data.Linq.DataQuery`1.System.ComponentModel.IListSource.GetList()
konum: System.Windows.Forms.CurrencyManager.SetDataSource(Object dataSource)
konum: System.Windows.Forms.CurrencyManager..ctor(Object dataSource)
konum: System.Windows.Forms.BindingContext.EnsureListManager(Object dataSource, String dataMember)
konum: System.Windows.Forms.ListControl.SetDataConnection(Object newDataSource, BindingMemberInfo newDisplayMember, Boolean force)
konum: System.Windows.Forms.ListControl.set_ValueMember(String value)
konum: TYH_Envanter.Envanter_Ekle.cb_Bolge_ValueMemberChanged(Object sender, EventArgs e) c:\Users\Arda\Documents\Visual Studio 2013\Projects\TYH Envanter\TYH Envanter\Envanter_Ekle.cs içinde: satır 59
konum: System.Windows.Forms.ListControl.OnValueMemberChanged(EventArgs e)
konum: System.Windows.Forms.ListControl.set_ValueMember(String value)
konum: TYH_Envanter.Envanter_Ekle.cb_Bolge_MouseHover(Object sender, EventArgs e) c:\Users\Arda\Documents\Visual Studio 2013\Projects\TYH Envanter\TYH Envanter\Envanter_Ekle.cs içinde: satır 46
konum: System.Windows.Forms.Control.OnMouseHover(EventArgs e)
konum: System.Windows.Forms.Control.WmMouseHover(Message& m)
konum: System.Windows.Forms.Control.WndProc(Message& m)
konum: System.Windows.Forms.ComboBox.WndProc(Message& m)
konum: System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
konum: System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
konum: System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
konum: System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
konum: System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
konum: System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
konum: System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
konum: System.Windows.Forms.Application.Run(Form mainForm)
konum: TYH_Envanter.Program.Main() c:\Users\Arda\Documents\Visual Studio 2013\Projects\TYH Envanter\TYH Envanter\Program.cs içinde: satır 19
konum: System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
konum: System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
konum: Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
konum: System.Threading.ThreadHelper.ThreadStart_Context(Object state)
konum: System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
konum: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
konum: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
konum: System.Threading.ThreadHelper.ThreadStart()
InnerException:
【问题讨论】:
-
问题是什么?
-
第二个事件应该是 SelectedValueChanged 或 SelectedIndexChanged 之类的?
-
欢迎来到 Stack Overflow!你能告诉我们你收到什么错误信息吗?您可以使用问题下方的“编辑”标志将其编辑到您的帖子中。祝你好运!