Wpf下拉框数据绑定
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:Visual Studio 2015、wpf
撰写时间:2021/1/20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本次所讲的内容是下拉框绑定,相信大家都比陌生。在wpf中的绑定数据和MVC有所不同,它涉及到了数据库的存错过程,还要以服务端为桥梁。话不多说直接上代码:
假设我要绑定个委托单位的下拉框数据 :
XAML:
<TextBlock Grid.Row="3" Foreground="White" Grid.Column="1" Text="委托单位:" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<ComboBox Grid.Row="3" Grid.Column="2" Background="AliceBlue" Width="200" Height="35" x:Name="CompanyName"/>
C#
private void InsterMarineExit_Loaded(object sender, RoutedEventArgs e)
{
#region 绑定下拉框
#region 委托单位
DataTable dtCompanyName = myClient.Search_EntrustingParty_MouseDoubleClick().Tables[0];
CompanyName.ItemsSource = dtCompanyName.DefaultView;
CompanyName.DisplayMemberPath = "CompanyName";
CompanyName.SelectedValuePath = "CompanyID";
#endregion
}
服务端:
namespace BLL.BasicData
{
[ServiceContract]
class UC_MarineExit
{
//实例化数据层
DAL.DALMethod myDALMethod = new DAL.DALMethod();
[OperationContract]
public DataSet Select_MarineExit_DataGrid()
{
SqlParameter[] mySql = { new SqlParameter("@Type", SqlDbType.Char), };
mySql[0].Value = "Select_MarineExit_DataGrid";
DataTable myDataTable = myDALMethod.QueryDataTable("UC_MarineExit", mySql);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#region 下拉框绑定
[OperationContract]//委托单位
public DataSet Search_EntrustingParty_MouseDoubleClick()
{
SqlParameter[] mySql = { new SqlParameter("@Type", SqlDbType.Char)};
mySql[0].Value = "Search_EntrustingParty_MouseDoubleClick";
DataTable myDataTable = myDALMethod.QueryDataTable("UC_MarineExit", mySql);
DataSet myDataSet = new DataSet();
myDataSet.Tables.Add(myDataTable);
return myDataSet;
}
#endregion
}
}
ServiceContract(服务契约) OperationContract(操作契约)
“契约”从字面上理解就是交互双方或多方就某个关注点达成的一种共识,是一方向另一方的一种承诺。签署了某个契约就意味着自己有义务履行契约中规定的各项规定,一旦违约就会影响契约双方的正常交互。
服务契约就是对功能的抽象,而功能通过一个个的操作(Operation)承载,所以服务契约可以看成是一个相关操作的集合。
数据库存储过程:
--(下拉框)(委托单位)
IF(@Type='Search_EntrustingParty_MouseDoubleClick')
BEGIN
SELECT
CompanyID,
RTRIM(CompanyName) AS CompanyName
FROM S_Company
union --插入
select 0,'---请选择---' from S_Company
END
在写存储过程中该声明的字段还是要声明的,这里就几个就不写出来了。最后效果图送上。