首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将值从下拉列表传递到SQL以使用C#获取数字信息?

如何将值从下拉列表传递到SQL以使用C#获取数字信息?
EN

Stack Overflow用户
提问于 2017-04-08 02:22:07
回答 2查看 56关注 0票数 0

下面的C#代码用于使用描述填充下拉列表,正如您从SQL语句中看到的那样。但是,同时,我需要根据ddl中的选择获得数值2.0和2.5:

  • “2.5”表示“公开2.5”
  • “2”表示“Red.w/45°2”

从SQL中提取数据以填充ddl的想法是为将来在SQL中自动添加更多数据留下一个敞开的大门。如何从ddl中传递非常选定的值,然后从同一列直径中得到数字,以便根据数字2和2.5英寸进行必要的计算?

这个查询:SELECT Diameter FROM [tblNozzleDetail] where Diameter != 0提取数值(2和2.5英寸),但ddl也必须填充描述+值(我知道,我可以硬编码或使用ddl后面的属性)。

这是C#代码:

代码语言:javascript
运行
复制
public void GetFlowRestrictionDiametersValues()
{
    ModalPopupUpdate.Show();
    try
    {
        List<string> ListFlowRestrictionDiametersValues = new List<string>();

        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["someString"].ToString()))
        {
            conn.Open();
            SqlCommand cmd = new SqlCommand(@"SELECT case when Diameter = '2.5' then 'Open 2.5""' when Diameter = '2' then 
                'Red. w/45° 2""' else [Stream Restriction] end as Diameter FROM [tblNozzleDetail] where Diameter != 0 ORDER BY DIAMETER", conn);

            {
                SqlDataReader reader = cmd.ExecuteReader();

                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        diametersValues = reader[0].ToString();
                        ListFlowRestrictionDiametersValues.Add(diametersValues);
                    }
                }
                reader.Close();
            }
        }
        cbFlowRestrictionDiameterModal.Items.Clear();
        int counter = 1;
        cbFlowRestrictionDiameterModal.Items.Insert(0, new ListItem("(Select)", "0"));
        foreach (string item in ListFlowRestrictionDiametersValues)
        {
            cbFlowRestrictionDiameterModal.Items.Add(new ListItem(item, counter.ToString()));
            counter++;
        }
    }
    catch (SqlException ex)
    {
        //Log exception

    }
}

任何建议或更正,以良好的态度,将是非常感谢。对不起,问得太多了。我是新来的程序员。顺便说一下,数据库就是这样创建的。我没有太多的选择。

请参阅下列图片:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-08 02:34:50

将sql查询更改为

代码语言:javascript
运行
复制
SELECT 
   case 
      when Diameter = '2.5' then 'Open 2.5""'
      when Diameter = '2' then 'Red. w/45° 2""' 
      else [Stream Restriction] end as DisplayName,
   Diameter AS [Value]    
FROM [tblNozzleDetail] where Diameter != 0 ORDER BY DIAMETER

将(DisplayName,Value)绑定到下拉列表项。yourdropdowlist.SelectedValue将返回您所需的值

也许就像这样

为下拉列表数据创建一个类

代码语言:javascript
运行
复制
public class DropDownListClass
    {
        public string DisplayName { get; set; }
        public string Value { get; set; }
    }

和你的方法后面的代码

代码语言:javascript
运行
复制
public void GetFlowRestrictionDiametersValues()
    {
        ModalPopupUpdate.Show();
        try
        {
            List<DropDownListClass> ListFlowRestrictionDiametersValues = new List<DropDownListClass>();

            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["someString"].ToString()))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand(@"SELECT 
                                                   case 
                                                      when Diameter = '2.5' then 'Open 2.5'
                                                      when Diameter = '2' then 'Red. w/45° 2' 
                                                      else [Stream Restriction] end as DisplayName,
                                                   Diameter AS [Value]    
                                                 FROM [tblNozzleDetail] where Diameter != 0 ORDER BY DIAMETER", conn);

                {
                    SqlDataReader reader = cmd.ExecuteReader();

                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            ListFlowRestrictionDiametersValues.Add(new DropDownListClass()
                            {
                                DisplayName = (reader["DisplayName"]).ToString(),
                                Value = (reader["Value"]).ToString()
                            });
                        }
                    }
                    reader.Close();
                }
            }
            cbFlowRestrictionDiameterModal.Items.Clear();
            cbFlowRestrictionDiameterModal.Items.Insert(0, new ListItem("(Select)", "0"));
            foreach (var item in ListFlowRestrictionDiametersValues)
            {
                cbFlowRestrictionDiameterModal.Items.Add(new ListItem(item.DisplayName, item.Value));
            }
        }
        catch (SqlException ex)
        {
            //Log exception

        }
    }
票数 1
EN

Stack Overflow用户

发布于 2017-04-08 03:59:10

谢谢@TriV,我只是做了一个更正,并使用:

代码语言:javascript
运行
复制
                            ListFlowRestrictionDiametersValues.Add(new DropDownListClass()
                        {
                            DisplayName = (reader["DisplayName"]).ToString(),
                            Value = (reader["Value"]).ToString()
                        });

非常感谢!我不知道该怎么做。它给出了正确的值:2和2.5加上下面的列表。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43289490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档