2014-12-23 163 views
0

代码绑定默认值下拉列表从数据表C#列表

protected void Page_Load(object sender, EventArgs e) 
{   
    ddlYear.DataSource = GetYear(); 
    ddlYear.DataBind(); 
    ddlYear.Items.Insert(0, "--Select--"); 
    ddlYear.Items.Insert(1, "All"); 
} 

public static DataTable GetYear() 
    { 
     DataTable dt = new DataTable(); 
     string strcon = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(strcon)) 
     { 
      conn.Open(); 
      string strQuery = "SELECT Previous_Year AS Year FROM Year UNION ALL SELECT Current_Year FROM Year"; 
      SqlCommand cmd = new SqlCommand(strQuery, conn); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(dt); 
     } 
     return dt; 
    } 

我的DataTable返回低于价值

2014 
2015 

现在页面上加载我的下拉值应该像下面的,默认情况下我需要在下拉列表中显示2014年的价值。

--Select-- 
    All 
    2014 
    2015 

回答

1

首先从数据库中通过使用DataSourceDataBind()功能添加数据。

您可以通过创建一个新的ListItem并将其插入到您的项目的开始处,将默认选项添加到您的选择。

ListItem item = new ListItem(); 
item.Text = "All"; 
item.Value = "-1"; 

this.ddlSelectBoxId.Items.Insert(0, item); 

要选择2014:

this.ddlSelectBoxId.SelectedValue = "2014"; 

这里ddlSelectBoxId是你的ASP DropDownList控件的ID。

要显示当前的一年,你可以使用以下命令:

this.ddlSelectBoxId.SelectedValue = DateTime.Now.Year.ToString(); 

要从DataTable显示的第一个项目:

确保您使用的SQL命令排序您的需求,在那之后使用:

this.ddlSelectBoxId.SelectedValue = DataTable.Rows[0][0]; 

这个t提供第一行的第一行和第一列。 DataTable是你的函数返回的变量。

+0

我不想硬编码值2014年,它必须是动态的。意味着它必须从数据表中选择最小值。 – Michael

+0

你想显示当前年份吗?如果是这样,请参阅我的答案更新! – Mivaweb

+0

具有年度信息的年份表格,其值可以像'2014,2015',后面可以是'2015,2016',有时甚至可以是'2012,2013'。所以在这些组合中,它必须选择最小值。 – Michael

1

试试这个,

ddlYear.DataSource = GetYear(); 
ddlYear.DataBind(); 
ddlYear.Items.Insert(0, "--Select--"); 
ddlYear.Items.Insert(1, "All"); 
ddlYear.Items.FindByValue("2014").Selected = true; 
+0

我不想硬编码值2014和它必须是动态的。意味着它必须从数据表中选择最小值。 – Michael

+0

@Michael它可能是动态的吗?如果是这样,你必须做一些魔术! – Sajeetharan

+0

@Michael:绑定时只需按升序排列结果。即使将“select”和“all”添加到下拉列表中,第三项绝对是最小值。 – Wanderer

0

我希望你想选择默认选择当前年份。你可以做到这一点的

ddlYear.SelectedValue=DateTime.Today.Year.ToString() 
1

如果序列直接2014,2015 .....那么你可以设置列表下拉到真正的appenddatabounditems财产。

此外, 在页面加载

ddlYear.DataSource = GetYear(); 
Dim L As New List(Of string) 
For Each item As ListItem In ddlYear 
L.Add((item.Value).ToString()); 
Next 
ddlYear.selectedvalue = L.Min(); 
ddlYear.DataBind();