将数据绑定到ASP.NET中的DropDownList

时间:2015-07-19 16:57:51

标签: c# asp.net

我正在使用asp.net在Visual Studio中创建一个网站。 我的网站连接到Web Serbice Server,后者连接到SQL数据库。

在我的mainpage.aspx上,在文件的顶部,我有第一行:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="mainpage.aspx.cs"
Inherits=WebApplication.mainpage" %>

稍后在同一个mainpage.aspx文件中,我有一个下拉列表:

<asp:DropDownList ID="DropDownList1" runat="server" width="140px"></asp:DropDownList>

在我的mainpage.aspx.cs文件中,我在Pade_Load()中编写以下代码:

DataSet Company = WebSerivce.Company(IP, DataBaseName, UserName, Password);
DataTable cTable = Company.Table[0];

if(!Page.IsPostBack)
{
DropDownList1.DataSource = cTable;
DropDownList1.DataValueField = "ID_Comp";
DropDownList1.DataTextField = "Comp_Name";
DropDownList1.DataBind();
} 

SQL数据库表:

ID_Comp     | int          | (Primary Key)
----------------------------
Comp_Name   | nvarchar(50) |

我做错了什么?我已经按照多个教程的说明进行操作,但到目前为止还没有任何工作。我缺少什么基本的东西?

2 个答案:

答案 0 :(得分:1)

确保cTable中包含数据。 我测试了下面的代码(注释掉服务部分)并使用本地Northwind数据库,它工作得很好。因此,再次确保服务实际上将有效数据返回到cTable。放置一个调试器断点并检查cTable的内容。

//DataSet Company = WebSerivce.Company(IP, DataBaseName, UserName, Password);
//DataTable cTable = Company.Table[0];
string conn = ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString();
SqlDataSource dataSource = new SqlDataSource(conn, "select * from region"); 
DataSourceSelectArguments args = new DataSourceSelectArguments();
DataView view = dataSource.Select(args) as DataView;

DataTable cTable = view.ToTable(); 

if (!Page.IsPostBack)
{
    DropDownList1.DataSource = cTable;
    DropDownList1.DataValueField = "RegionID";
    DropDownList1.DataTextField = "RegionDescription";
    DropDownList1.DataBind();
}

浏览器下拉列表结果:

enter image description here

答案 1 :(得分:0)

请尝试如下。这样,您可以找到是否绑定空数据表。基于此,我们可以进一步排除故障。

        DataTable cTable = null;
        DataSet Company = WebSerivce.Company(IP, DataBaseName, UserName, Password);

        if (Company != null && Company.Tables[0] != null)
            cTable = Company.Tables[0];

        if (!Page.IsPostBack)
        {
            if(cTable != null && cTable.Rows.Count > 0)
            {
                DropDownList1.DataSource = cTable;
                DropDownList1.DataValueField = "ID_Comp";
                DropDownList1.DataTextField = "Comp_Name";
                DropDownList1.DataBind();
            }
            else
            {
                DropDownList1.DataSource = new DataTable();
                DropDownList1.DataBind();
                DropDownList1.Items.Insert(0, "Select");
            }


        }