下面的C#代码用于使用描述填充下拉列表,正如您从SQL语句中看到的那样。但是,同时,我需要根据ddl中的选择获得数值2.0和2.5:
从SQL中提取数据以填充ddl的想法是为将来在SQL中自动添加更多数据留下一个敞开的大门。如何从ddl中传递非常选定的值,然后从同一列直径中得到数字,以便根据数字2和2.5英寸进行必要的计算?
这个查询:SELECT Diameter FROM [tblNozzleDetail] where Diameter != 0提取数值(2和2.5英寸),但ddl也必须填充描述+值(我知道,我可以硬编码或使用ddl后面的属性)。
这是C#代码:
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
}
}任何建议或更正,以良好的态度,将是非常感谢。对不起,问得太多了。我是新来的程序员。顺便说一下,数据库就是这样创建的。我没有太多的选择。
请参阅下列图片:

发布于 2017-04-08 02:34:50
将sql查询更改为
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将返回您所需的值
也许就像这样
为下拉列表数据创建一个类
public class DropDownListClass
{
public string DisplayName { get; set; }
public string Value { get; set; }
}和你的方法后面的代码
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
}
}发布于 2017-04-08 03:59:10
谢谢@TriV,我只是做了一个更正,并使用:
ListFlowRestrictionDiametersValues.Add(new DropDownListClass()
{
DisplayName = (reader["DisplayName"]).ToString(),
Value = (reader["Value"]).ToString()
});非常感谢!我不知道该怎么做。它给出了正确的值:2和2.5加上下面的列表。
https://stackoverflow.com/questions/43289490
复制相似问题