2013-03-15 76 views
0

我有下面的代碼。當我使用參數運行程序並運行一次存儲過程時,例如223然後用參數例如315 ant運行它,然後再次用參數I獲得System.Data.DataRowView「而不是實際值。你能幫我下面嗎?System.Data.DataRowView而不是實數值

private void GetServers() 
    { 
     IDBManager dbManager = new DBManager (DataProvider.SqlServer); 
     dbManager.ConnectionString = @"Data Source=server; Initial Catalog=base; Integrated Security = SSPI;"; 

     try 
     { 
      dbManager.Open(); 
      dbManager.CreateParameters(1); 
      dbManager.AddParameters(0,"@report_id", (txtReportID.Text)); 
      DataSet ds = new DataSet("Servers"); 
      ds = dbManager.ExecuteDataSet(CommandType.StoredProcedure, "sp_get_servers_from_report_test");    
      if (ds.Tables[0].Rows.Count > 0) 
      { 

       chkdListBoxServers.DataSource = ds.Tables[0]; 
       chkdListBoxServers.DisplayMember = "Servers"; 
       chkdListBoxServers.ValueMember = "server_name";     
      } 
      else 
      { 
       MessageBox.Show("No servers or incorrect report id"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
     finally 
     { 
      dbManager.Dispose(); 
     } 
    } 
+0

我猜'chkdListBoxServers.DisplayMember =「server_name」;'會沒事的。 – 2013-03-15 12:33:44

+0

它的工作原理!謝謝你的幫助。 – ironcurtain 2013-03-15 13:48:44

+0

將作爲答案發布。 – 2013-03-15 13:58:47

回答

1

更換我猜chkdListBoxServers.DisplayMember = "server_name";將被罰款。

+0

Wiktor的解決方案爲我工作。我很奇怪,爲什麼DisplayMember屬性有設置一樣ValueMember屬性?奇怪的是,我認爲我能夠運行存儲prodecure只有兩次之後,它停止正常工作。感激,如果有人可以解釋給我聽。在此先感謝。 – ironcurtain 2013-03-17 19:41:48

0

與此代碼

//DataSet ds = new DataSet("Servers"); //delete this 

      var ds = dbManager.ExecuteDataSet(CommandType.StoredProcedure, "sp_get_servers_from_report_test");    
+0

它不工作:(我還注意到,當我嘗試執行與第三個參數的過程也返回System.Data.DataRowView」,而不是真正的價值 – ironcurtain 2013-03-15 13:46:37