【问题标题】:how to check if a dropdownlist contains the value saved from database?如何检查下拉列表是否包含从数据库保存的值?
【发布时间】:2016-09-13 17:48:00
【问题描述】:

我有 3 个下拉菜单:财产、资本、公司。每个都有不同的值。 我正在保存用户在隐藏字段 (hfFromEntity) 中填写表单时所做的选择。我在检索信息以重新加载表单时遇到问题。我想将隐藏字段的值与所有 3 个下拉列表进行比较,然后选择其中包含该值的那个。但不知道该怎么做。 下面是我如何填充下拉列表。

     private void PopulateDropDownValues()
     {
         DataTable dt = objMrsManager.GetAllProperties();
         DataTable dc = objMrsManager.GetlAllCapitals();
         DataTable ds = objMrsManager.GetlAllCorporates();

        if (dt != null && dt.Rows.Count > 0)
        {
            foreach (DataRow dr in dt.Rows)
            {
                drpFromProperty.Items.Add(new ListItem(dr["NAME"].ToString(), dr["ENTITYID"].ToString()));
                drpToProperty.Items.Add(new ListItem(dr["NAME"].ToString(), dr["ENTITYID"].ToString()));
            }
        }

        if (dc != null && dc.Rows.Count > 0)
        {
            foreach (DataRow dr in dc.Rows)
            {
                drpFromCapital.Items.Add(new ListItem(dr["NAME"].ToString(), dr["ENTITYID"].ToString()));
                drpToCapital.Items.Add(new ListItem(dr["NAME"].ToString(), dr["ENTITYID"].ToString()));
            }
        }

        if (ds != null && ds.Rows.Count > 0)
        {
            foreach (DataRow dr in ds.Rows)
            {
                drpFromCorporate.Items.Add(new ListItem(dr["NAME"].ToString(), dr["ENTITYID"].ToString()));
                drpToCorporate.Items.Add(new ListItem(dr["NAME"].ToString(), dr["ENTITYID"].ToString()));
            }
        }

        drpFromCorporate.Items.Insert(0, new ListItem("--Select Corporate--", "0"));
        drpToCorporate.Items.Insert(0, new ListItem("--Select Corporate--", "0"));
        drpFromCapital.Items.Insert(0, new ListItem("--Select Capital--", "0"));
    } 


    private void LoadWireTransfers()
    {
        if (WireTransfers != null && WireTransfers.Rows.Count > 0)
        {
            DataRow dr = WireTransfers.Rows[CurrentPosition];

            hfWireTransferID.Value = dr["WTID"].ToString();   
            hfWFromEntity.Value = dr["WFromEntity"].ToString();
            hfWToEntity.Value = dr["WToEntity"].ToString();

            //I want to compare the hfWFromEntityValue with each dropdownlists
            if (hfhfWFromEntity.Value == drpFromProperty.????)
            {
                drpFromProperty.Items.Clear();
                drpFromProperty.Items.Add(new ListItem(dr["WFromEntity"].ToString()));
            }

            //This doesn't work. I don't know how else I can do
            if (drpFromCapital.Items.Contains(new ListItem(hfWFromEntity.Value)))
            {
                drpFromCapital.Items.Clear();
                drpFromCapital.Items.Add(new ListItem(dr["WFromEntity"].ToString()));
            }

            if (hfhfWFromEntity.Value == drpFromCorporate.????)
            {
                drpFromCorporate.Items.Clear();
                drpFromCorporate.Items.Add(new ListItem(dr["WFromEntity"].ToString()));
            }
    }

【问题讨论】:

    标签: c# asp.net sql-server database drop-down-menu


    【解决方案1】:

    您可以使用以下命令搜索下拉列表中显示的文本:

        if (drpFromCapital.Items.FindByText(hfWFromEntity.Value) != null)
        {
            drpFromCapital.Items.Clear();
            drpFromCapital.Items.Add(new ListItem(dr["WFromEntity"].ToString()));
        }
    

    要按值搜索,您需要使用:

    if (drpFromCapital.Items.FindByValue(hfWFromEntity.Value) != null)
    {
        drpFromCapital.Items.Clear();
        drpFromCapital.Items.Add(new ListItem(dr["WFromEntity"].ToString()));
    }
    

    【讨论】:

    • @mbadevloper 这个方法没有得到值。它为所有三个下拉菜单返回 null。
    • 您可以使用此方法drpFromCapital.Items.FindByText 来通过下拉列表文本查找它为用户显示的文本,按值搜索您需要使用drpFromCapital。 Items.FindByValue 改为: if (drpFromCapital.Items.FindByValue(hfWFromEntity.Value) != null) { drpFromCapital.Items.Clear(); drpFromCapital.Items.Add(new ListItem(dr["WFromEntity"].ToString())); }
    • 我已经尝试过 FindByValue。我仍然为空。它不会与隐藏字段的值匹配。
    • 调试它并确保隐藏字段有值。可能是您在字符串末尾有多余的空间,因此请使用 hfWFromEntity.Value.Trim() 并确保它是否匹配大写字母和小写字母。我测试它及其对我的工作。祝你好运:)
    【解决方案2】:

    这会在组合框中找到代表您的字符串的项目,并为您提供可以选择的项目:

    var item = drpFromProperty.Items.FindByValue(hfhfWFromEntity.Value)
    if (item != null)
        item.Selected = true;
    

    【讨论】:

    • 此方法适用于组合框而非下拉列表
    • 它不起作用。我的项目为空。 hfWFromEngity.Value = 一个值,但在下拉列表中找不到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 2019-09-22
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多