2015-07-19 212 views
0

我正在使用asp.net在Visual Studio中創建一個網站。 我的網站已連接到連接到SQL數據庫的Web Serbice Server。將數據綁定到ASP.NET中的DropDownList

在我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

您是否在cTable中獲得了價值? –

+1

如何檢查? – OverflowStack

+0

「使用調試」。 .1。在「數據集公司」保留一個調試點2.運行應用程序..執行將在該點進行,您可以在c表中看到該值表 – Webruster

回答

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

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"); 
      } 


     } 
+0

好吧,如果'cTable'是由於某種原因'null' ,你的代碼會發生什麼事情if(cTable.Rows.Count> 0)'?我認爲一些錯誤會上升。所以,我認爲最好用'if(Company!= null && Company.Tables [0]!= null){cTable = Company.Tables [0]; ...和其他代碼。 – nelek

+0

謝謝指出。我更正了上面的代碼。 –

相關問題