- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的组合框:
<ComboBox HorizontalAlignment="Left"
Margin="125,110,0,0"
VerticalAlignment="Top"
Width="120"
DisplayMemberPath="lot_number"
ItemsSource="{Binding LotNumList}"
RenderTransformOrigin="0.583,2" Height="18" />
这是我要将值更新为的 DataGrid:
<DataGrid HorizontalAlignment="Left" Margin="228,177,0,0" VerticalAlignment="Top"
Height="292" Width="617" ItemsSource="{Binding ComponentsList}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Component" Binding="{Binding component}" CanUserResize="False"/>
<DataGridTextColumn Header="Control" Binding="{Binding aControl}" CanUserResize="False"/>
<DataGridTextColumn Header="Reference" Binding="{Binding cal_ref}" CanUserResize="False" />
<DataGridTextColumn Header="Family" Binding="{Binding family}" CanUserResize="False"/>
<DataGridTextColumn Header="Id" Binding="{Binding componentId }" CanUserResize="False"/>
</DataGrid.Columns>
下面是我如何从数据库中获取数据来填充 ComboBox:
//Grabs the lot_number column from db that is distinct
var lotNum = db.LotInformation.GroupBy(i => i.lot_number)
.Select(group => group.FirstOrDefault());
//Loops through the lot numbers column in db and converts to list
foreach (var item in lotNum)
{
Console.WriteLine(item.lot_number);
}
LotNumList = lotNum.ToList();
现在我想知道如何连接我的 ComboBox,以便当我在 ComboBox 中选择一个值时...然后 DataGrid 会根据 ComboBox 中的选择值进行更新。
我试过这样的:
private void UpdateExistLotList(string LotNumber)
{
using (var db = new DDataContext())
{
//Grabs the lot_number column from db that is distinct
var ExistLot = db.LotInformation.First(l => l.lot_number.Equals(LotNumber));
}
}
在我的批号列表属性中调用该方法,但它没有被调用或根本不起作用。我不确定我做错了什么。有什么想法吗?
编辑:
属性:
public List<Components> ComponentsList
{
get
{
return components;
}
set
{
components = value;
RaisePropertyChanged("ComponentsList");
}
}
public string LotNumber
{
get
{
return lotNumber;
}
set
{
lotNumber = value;
RaisePropertyChanged("LotNumber");
}
}
public List<LotInformation> LotNumList
{
get
{
return lotNumList;
}
set
{
lotNumList = value;
RaisePropertyChanged("LotNumList");
UpdateExistLotList(LotNumber);
}
}
这里是声明LotNumber的地方(我从内存中取出批号的反序列化值赋值给LotNumber):
public void DeSerializationXML(string filePath)
{
XmlRootAttribute xRoot = new XmlRootAttribute();
xRoot.ElementName = "lot_information";
xRoot.IsNullable = false;
// Create an instance of lotinformation class.
var lot = new LotInformation();
// Create an instance of stream writer.
TextReader txtReader = new StreamReader(filePath);
// Create and instance of XmlSerializer class.
XmlSerializer xmlSerializer = new XmlSerializer(typeof(LotInformation), xRoot);
// DeSerialize from the StreamReader
lot = (LotInformation)xmlSerializer.Deserialize(txtReader);
// Close the stream reader
txtReader.Close();
//Storing deserialized strings to db
using (var db = new DMIDataContext())
{
LotInformation newLot = new LotInformation();
if (newLot != null)
{
newLot.Id = lot.Id;
newLot.lot_number = lot.lot_number;
newLot.exp_date = lot.exp_date;
LotNumber = newLot.lot_number;
ExpirationDate = newLot.exp_date.ToString();
//Grabs the lot_number column from db that is distinct
var lotNum = db.LotInformation.GroupBy(i => i.lot_number).Select(group => group.FirstOrDefault());
//Loops through the lot numbers column in db and converts to list
foreach (var item in lotNum)
{
Console.WriteLine(item.lot_number);
}
LotNumList = lotNum.ToList();
foreach (Components comp in lot.Components)
{
newLot.Components.Add(comp);
}
ComponentsList = newLot.Components;
foreach (Families fam in lot.Families)
{
newLot.Families.Add(fam);
}
FamiliesList = newLot.Families;
try
{
db.LotInformation.Add(newLot);
db.SaveChanges();
Console.WriteLine("successfully");
}
catch
{
//TODO: Add a Dialog Here
}
}
}
最佳答案
private void UpdateExistLotList()
{
using (var db = new DDataContext())
{
//Grabs the lot_number column from db that is distinct
var ExistLot = db.LotInformation.First(l => l.lot_number.Equals(LotNumber));
}
}
这个方法没有para?
但你是这样调用它的?
{
lotNumList = value;
RaisePropertyChanged("LotNumList");
UpdateExistLotList(LotNumber);
}
有什么问题吗?
您的问题是 UpdateExistLotList
从未被调用过?
尝试在 VisualStudio 中的 RaisePropertyChanged("LotNumList");
上添加一个断点并观察它为什么没有被调用。
在你的代码中,我不知道 ExistLot
和 LotNumber
的用法。
我猜你的需求是这样的?
Comobox 显示 LotInformation,选择一个 LotInformation 并使 datagrid 显示 LotInformation.Components ?
如果是这样,您可以绑定(bind) DataGrid 的 Itemsource={Binding Components,ElementName=ComboboxName}
或者你可以绑定(bind)Combobox的SelectedItem/SelectedValue,然后在这些事件中设置ComponentsList。
获取您的需求。
您的意思是您没有在 EntityFramework 或其他数据库框架中设置 Components 和 LotInformation 之间的关系。如果你使用EF,我建议你将Components和LotInformation建立关联,然后你可以通过LotInformation.Components
获取ComponentsList。
换个方式,试试这样:
<ComboBox HorizontalAlignment="Left"
Margin="125,110,0,0"
VerticalAlignment="Top"
Width="120"
DisplayMemberPath="lot_number"
SelectedItem="{Binding SelectedLot}"
ItemsSource="{Binding LotNumList}"
RenderTransformOrigin="0.583,2" Height="18" />
private LotInformation selectedLot;
public LotInformation SelectedLot
{
get { return selectedLot; }
set
{
selectedLot = value;
var lot = value as LotInformation;
if (lot != null)
{
ComponentsList = new List<Components>();
//add ComponentsList
}
}
}
关于c# - 当用户在 ComboBox 中进行选择时,如何更新我的 DataGrid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23531386/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我有一个包含一些数据的网格(用户列表)。对于每一行,我有许多操作,例如更新、删除、激活、暂停、查看您命名的订单。 而不是放置如此多的按钮,这些按钮将填充超过 400-500像素 我想放置一个组合框,其
在我的一个对话框中,我有以下控制: 我在其他地方填充 ComboBox,如下所示: 但是,如果我没有创建 ComboBox 位,MSI 仍将构
我在项目中为 MVC 使用了 kendo complete。 我有某些形式的国家/地区列表,我显示国家/地区名称,但存储国家/地区代码。 我有以下问题:当用户输入不在列表中的内容时,该值将发送到服务器
我有一个组合框,其中的值是从托管 bean 填充的,如下所示: keywordlist.setConnDB("jdbc:sqlserver://xx.xx.x.xx:1433;DatabaseName
我有一个 ComboBox,它绑定(bind)到 ViewModel 中的复杂类型集合,这些类型的长度可以是任意数量,具体取决于用户的偏好。 我已经创建了一个基于 ComboBox 默认值的样式,并且
我做了一个转换器: public class BooleanToDateConverter implements Converter { private static final long s
编辑:由于 Rob 的回答,我已经更新了下面的代码,现在它可以工作了。 我找到了几页显示如何执行此操作的页面( http://www.cmcrossroads.com/content/view/131
我是 PyQT 的新手。 我有兴趣向 tableView 的每一行添加一个组合框。在 PyQT 4 中可能吗? 我知道,在 QT5 中是可能的,但不确定 PyQT。 预先感谢您的帮助。 最佳答案 如果
我对 JavaFX(8)、HBox、ComboBox 和 HGrow 有问题。 HGrow 不能与 ComboBox 结合使用。 (信息:使用 TextField (而不是 ComboBox),它按预
我有一个 XAML UserControl连接到 ImportPresenter View 模型。有四个ComboBox我的 XAML 中的项目: CashActivityTypeBAI CashAc
我将两个组合框绑定(bind)到同一个 listviewcollection。问题是在一个组合框中选择一个值会导致另一个组合框选定项更改为第一个组合框的确切值。它们是耦合的,我希望它们彼此独立。 My
我正在尝试在 extjs 3.4 中的组合框中的选项之间添加一行。我可以添加该行,但不能用我的远程位置的数据填充它。 (如果我删除修改的 tpl 选项,它就会填充)。 这是我的代码。我只需要在“组”字
我被 WIX 安装程序中的组合框和自定义操作困住了。 我有一个包含几个值的组合框(下拉菜单)。当用户从此下拉列表中选择一个值时,我想在屏幕上显示一些文本(对于下拉列表中的每个项目都是唯一的)。 在 .
我有 ComboBox cbx 和一个包含选项卡的 TabPane(选项卡:t)和一个按钮 b1。因此,单击此按钮 b1 时,它会在 TabPane 中添加一个新选项卡 t,并在包含以下内容的 Com
我有两个组合框:水果和饮料。 fruits 具有字符串:“apple”、“orange”、“banana” drinks 具有字符串:“water”、“coffee”、“juice” 如何制作一个新组
我必须监听什么事件,以便在用户从(可编辑的)WPF ComboBox control 中选择一个选项时得到通知? 我是否必须先访问 Items 属性才能收听 Items.CurrentChanged?
我有以下简单的 QML 组合框: import QtQuick 2.0 import QtQuick.Controls 1.4 import si.mikroelektronika 1.0 Item
当我创建组合框时,列表中没有项目。现在,当我单击下拉按钮时,会调用一个函数(通过 postcommand 选项),但是一旦在我的函数中,我不知道如何在组合框的列表框中设置值。 代码如下: #u
我有两个组合框 我使用 LINQ-to-Entities 来填充 cmbGroup 组合框 Dim db as myDataEntity cmbGroup.ItemsSource = db.Mak
我是一名优秀的程序员,十分优秀!