我正在使用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) |
我做错了什么?我已经按照多个教程的说明进行操作,但到目前为止还没有任何工作。我缺少什么基本的东西?
答案 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();
}
浏览器下拉列表结果:
答案 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");
}
}