vb.net中的组合框
如何根据vb.net中另一个组合框中的选定项隐藏或禁用一个组合框中的项?在第一个组合框的选定索引更改事件中操作第二个组合框的数据源。在第一个组合框的选定索引更改事件中操作第二个组合框的数据源。正如gerrie所说,您必须在第二个组合框selected indexed changed event中设置一个条件,如下所示:vb.net中的组合框,.net,vb.net,data-binding,combobox,.net,Vb.net,Data Binding,Combobox,如何根据vb.net中另一个组合框中的选定项隐藏或禁用一个组合框中的项?在第一个组合框的选定索引更改事件中操作第二个组合框的数据源。在第一个组合框的选定索引更改事件中操作第二个组合框的数据源。正如gerrie所说,您必须在第二个组合框selected indexed changed event中设置一个条件,如下所示: Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As Syst
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
If ComboBox1.SelectedValue = "my Value" Then
ComboBox2.Visible = False
End If
End Sub
其中“我的值”是我在combobox1中的值
编辑:
除非清除值,否则组合框将保留插入的值。通过使用这行代码
ComboBox2.Items.Clear()
或者,您将值放入一个类似于Datatable的列表中,并指向该特定Datatable的combobox数据源,正如gerrie所说,您必须在第二个combobox selected indexed changed事件中设置一个条件,如下所示:
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
If ComboBox1.SelectedValue = "my Value" Then
ComboBox2.Visible = False
End If
End Sub
其中“我的值”是我在combobox1中的值
编辑:
除非清除值,否则组合框将保留插入的值。通过使用这行代码
ComboBox2.Items.Clear()
或者,您将这些值放入一个类似于Datatable的列表中,并指向该特定Datatable的combobox数据源,我只是想解决这个问题。结果是,当我清除组合框中的项目并将所选索引设置为-1时,它抛出了一个异常,无法找到所选索引。我的解决办法如下:
using System.Web.UI.WebControls;
namespace AjaxControlToolkit.Extensions
{
public static class ComboBoxExtension
{
public static void ForceClearSelectedIndex(this AjaxControlToolkit.ComboBox comboBox)
{
if (comboBox.Items.Count > 0)
comboBox.Items.Clear();
comboBox.Items.Add(new ListItem(string.Empty, string.Empty));
comboBox.Text = string.Empty;
}
}
}
然后,在第一个组合框的ItemInserted事件或selected index/text changed事件中,您只需调用:
ComboBoxName.ForceClearSelectedIndex();
将所有这些放在一起,您可以做到这一点:
protected void tbxCustomerName_TextChanged(object sender, EventArgs e)
{
if (Customers.Count > 0)
{
var datasource = Devices.Where(d => d.Customer.FullName == tbxCustomerName.SelectedItem.Text);
tbxDeviceName.DataSource = datasource;
tbxDeviceName.DataTextField = "Name";
tbxDeviceName.DataValueField = "Device_ID";
tbxDeviceName.DataBind();
}
else
{
tbxDeviceName.ForceClearSelectedIndex();
}
}
不是用VB,但是你可以很容易地转换它。我只是想解决这个问题。结果是,当我清除组合框中的项目并将所选索引设置为-1时,它抛出了一个异常,无法找到所选索引。我的解决办法如下:
using System.Web.UI.WebControls;
namespace AjaxControlToolkit.Extensions
{
public static class ComboBoxExtension
{
public static void ForceClearSelectedIndex(this AjaxControlToolkit.ComboBox comboBox)
{
if (comboBox.Items.Count > 0)
comboBox.Items.Clear();
comboBox.Items.Add(new ListItem(string.Empty, string.Empty));
comboBox.Text = string.Empty;
}
}
}
然后,在第一个组合框的ItemInserted事件或selected index/text changed事件中,您只需调用:
ComboBoxName.ForceClearSelectedIndex();
将所有这些放在一起,您可以做到这一点:
protected void tbxCustomerName_TextChanged(object sender, EventArgs e)
{
if (Customers.Count > 0)
{
var datasource = Devices.Where(d => d.Customer.FullName == tbxCustomerName.SelectedItem.Text);
tbxDeviceName.DataSource = datasource;
tbxDeviceName.DataTextField = "Name";
tbxDeviceName.DataValueField = "Device_ID";
tbxDeviceName.DataBind();
}
else
{
tbxDeviceName.ForceClearSelectedIndex();
}
}
不是用VB,但是你可以很容易地转换它。我想他希望Combobox2中的数据发生变化。我想你没有遇到我的问题。情况是这样的。。combobox1 combobox2红苹果蓝芒果绿葡萄黄橙色当我从Combox2中选择一个值时,只有两个值必须在框1中可见,其余的不可见..如何操作..更改了我的答案,希望是您需要谢谢..我的问题已经解决。。在每种if情况下添加任何其他项之前,我都使用了remove()方法。我想他希望Combobox2中的数据发生变化。我想你没有遇到我的问题。情况是这样的。。combobox1 combobox2红苹果蓝芒果绿葡萄黄橙色当我从Combox2中选择一个值时,只有两个值必须在框1中可见,其余的不可见..如何操作..更改了我的答案,希望是您需要谢谢..我的问题已经解决。。在每个if情况下添加任何其他项之前,我都使用了remove()方法。。