2012-08-29 80 views
1

我已經有了數據表。我只需要在列表視圖中填寫它。問題是我遇到了這個錯誤:如何使用數據表填充列表視圖?

'System.Web.UI.WebControls.ListView'不包含'DisplayMember'的定義,也沒有擴展方法'DisplayMember'接受類型' System.Web.UI.WebControls.ListView「可以找到(你是否缺少使用指令或程序集引用?)

我認爲列表視圖有一個」DisplayMember「屬性?順便說一下,這是ASP .NET 4.0。

namespace Eagle_Replication_Manager 
{ 
    public partial class wfrmMain : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      //on page load, I want to get a database table and populate this list view: 
      lvItems.DataSource = GetSourceDBs(); 

      //This does not work, error here: 
      lvItems.DisplayMember = "Description"; 
     } 

     private DataTable GetSourceDBs() 
     { 
      using (SqlConnection conn = new SqlConnection(AppVars.connectionString)) 
      { 
       using (SqlCommand cmd = new SqlCommand("SELECT [Description] FROM [Warehouse].[dbo].[Items]", conn)) 
       { 
        conn.Open(); 

        cmd.ExecuteNonQuery(); 

        using (SqlDataAdapter da = new SqlDataAdapter(cmd)) 
        { 
         using (DataTable dt = new DataTable()) 
         { 
          da.Fill(dt); 
          return dt; 
         } 
        } 
       } 
      } 
     } 
    } 
} 

回答

1

這應該工作:

protected void Page_Load(object sender, EventArgs e) 
    { 
     lvItems.DataSource = GetSourceDBs(); 
     lvItems.DataBind(); 
    } 
+0

InvalidOperationException未被用戶代碼處理。 ItemTemplate必須在ListView的'lvItems'上定義。我看到我必須設置ItemTemplate,但有什麼選擇!? – Testifier

+0

這個想法是,在你的標記中你必須定義和所有的列,等等。如果你不想這樣做,那麼只需使用GridView,因爲它可以自動生成表格給你,而無需額外的工作。 – niaher

+0

啊,我明白了。我使用列表視圖的原因是用戶會從中選擇一個項目,所以我可以根據他/她的選擇來執行操作。 – Testifier

0

公共無效getdataToList(對象發件人,發送System.EventArgs){ SqlConnection的康恩=新的SqlConnection( 「< <把你的連接字符串>>」);

try { 
    lvItems.Columns.Clear() ; 
    lvItems.Items.Clear(); 

    conn.Open(); 
    txtSql.Text ="select * from Employee"; 

    SqlCommand cmd = conn.CreateCommand(); 
    cmd.CommandText = txtSql.Text; 

    SqlDataReader dr = cmd.ExecuteReader(); 

    for (int i = 0; i< dr.FieldCount; i++) { 
    ColumnHeader ch = new ColumnHeader(); 
    ch.Text=dr.GetName(i); 
    lvItems.Columns.Add(ch); 
    } 

    ListViewItem itmX; 

    while (dr.Read()) { 
    itmX=new ListViewItem(); 
    itmX.Text= dr.GetValue(0).ToString(); 

    for (int i=1 ; i< dr.FieldCount; i++) { 
     itmX.SubItems.Add(dr.GetValue(i).ToString()); 
    } 
    lvwResult.Items.Add(itmX); 
    } 
    dr.Close(); 
} catch (System.Data.SqlClient.SqlException ex) { 
    Console.WriteLine("There was an error in executing the SQL." + 
      "\nError Message:" + ex.Message, "SQL"); 
} finally { 
    conn.Close(); 
}