Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vb.net中的组合框_.net_Vb.net_Data Binding_Combobox - Fatal编程技术网

vb.net中的组合框

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

如何根据vb.net中另一个组合框中的选定项隐藏或禁用一个组合框中的项?

在第一个组合框的选定索引更改事件中操作第二个组合框的数据源。

在第一个组合框的选定索引更改事件中操作第二个组合框的数据源。

正如gerrie所说,您必须在第二个组合框selected indexed changed event中设置一个条件,如下所示:

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()方法。。