2013-05-07 154 views
0

我有一个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和它的作品,但不是与下拉列表

回答

2

要确保你有你的sqlquery的进入选择命令,那么你需要 SqlDataSource的选择命令转换成你数据视图。

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(); 
     } 
    } 
+0

+1,谢谢先生,dv.count告诉我5表中也有5条记录 – Mathematics 2013-05-07 14:41:42

+0

但是它没有填充下拉列表 – Mathematics 2013-05-07 14:42:15

+0

我不确定你的意思是什么先生 – Mathematics 2013-05-08 08:37:04

1

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

+0

感谢先生,但我无法找到数据源 – Mathematics 2013-05-07 14:19:09

+0

任何行物业有没有'rows'财产,但Visual Studio中应该很有帮助告诉你一个'数= x'。如果这没有发生,那么您的查询可能有问题。如果您有SQL Server Profiler,那么接下来我将使用它来获取发送到SQL Server的确切查询。 – 2013-05-07 14:23:35

+0

现在看到我的答案 – 2013-05-07 14:27:46

1

将数据源绑定到下拉列表的方式是正确的,同样的事情正在为我工​​作。

可能出现的错误可以

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

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

sqlds.Selected += new SqlDataSourceStatusEventHandler(sdl_Selected); 

其中sql_Selected是:

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

作为一个侧面说明 - 确保你选择查询没有按” t包含任何易于进行sql注入的字符串连接。即SELECT UserName from [TableName] where certainCol ="+ variable

不要做

提供SQL参数代替,并添加SelectParametersSqlDataSource

+0

没有任何错误select语句既没有连接字符串先生 – Mathematics 2013-05-07 14:37:47

+0

然后你的查询根本没有返回任何行 – 2013-05-07 14:40:28

+0

就像我清楚地说先生,查询返回行,谢谢 – Mathematics 2013-05-07 14:40:57