下拉列表未填充

时间:2013-05-07 14:06:46

标签: c# webforms sqldataadapter

我有一个c#代码行,

using (SqlDataSource sqlds = new SqlDataSource(ConnectionString(), SelectCommand()))
            {
                drop1.DataSource = sqlds;
                drop1.DataTextField = "UserName";
                drop1.DataBind();
            }

现在它没有填充我的下拉列表,

<asp:DropDownList id="drop1" runat="server" />

所以我想检查sql是否正在返回数据

如果我放线,我不知道如何找出sql是否正在返回数据,我正在使用select语句和gridview的连接字符串,它可以工作,但没有下拉列表

3 个答案:

答案 0 :(得分:2)

确保你的sqlquery进入select命令然后你需要转换你 sqldatasource选择命令进入dataview。

 string query = "select yourfield from yourtable";

using (SqlDataSource sqlds = new SqlDataSource(conn.ConnectionString, query))
{
   System.Data.DataView dv = (System.Data.DataView)sqlds.Select(DataSourceSelectArguments.Empty);
        if (dv.Count > 0)
        {
            DropDownList1.DataSource = sqlds;
            DropDownList1.DataTextField = "yourfield";
            DropDownList1.DataBind();
        }
  }

答案 1 :(得分:1)

您应该能够在drop1.DataSource = sqlds;上放置断点,然后将鼠标移到sqlds上,它应该显示DataSource中包含的行数。

答案 2 :(得分:1)

将数据源绑定到下拉列表的方式是正确的,同样的事情对我有用。

可能的错误可能是

    {li}在connectionString中。验证它是否正确。 选择查询中的
  • 。验证SelectCommand()方法是否返回正确的sql查询。

使用SqlDataSource的Selected事件来验证它是否返回任何行,即

   sqlds.Selected += new SqlDataSourceStatusEventHandler(sdl_Selected);

其中sql_Selected为:

  void sdl_Selected(object sender, SqlDataSourceStatusEventArgs e)
  {
      var a = e.AffectedRows;
  }

作为旁注 - 确保您的选择查询不包含任何易于sql注入的字符串连接。即SELECT UserName from [TableName] where certainCol ="+ variable

不要这样做

提供sql参数,并将SelectParameters添加到SqlDataSource