2014-01-06 2 views
1

У меня есть таблица (tblManagerReports), в которой будут храниться данные моего отчета. Эта таблица состоит из 4-х полей:Извлечение данных из таблицы SQL Server для использования в дальнейших вычислениях

  • ReportID - мой Primary поле
  • REPORTNAME - название доклада, который будет отображаться
  • SProc - имя хранимой процедуры, которую необходимо сначала запустить в вычислить данные
  • SQLView - имя представления, которое будет заполнять окончательный файл данных.

ReportID и ReportName будут заселять выпадающий список, и то, что я хочу сделать, это определить, какой отчет выбран, tblManagerReports запроса, чтобы захватить поля SProc и SQLView, а затем выполнить соответствующую хранимую процедуру и заполнить DataGrid с вид. Я решил, что это лучший способ сделать это приложение масштабируемым, так как все будущие отчеты просто нужно будет добавить в таблицу.

Я знаю, что «хороший вопрос» на SO включает код, но я даже не знаю, с чего начать. Может кто-нибудь мне помочь? Я пытался сделать некоторые поисковые запросы, но не могу найти ссылки на наличие нескольких столбцов в поле со списком (не , отображающее несколько столбцов, но их можно вытащить, так что информация в них может быть легко восстановлена), что я подумал сначала, может решить эту проблему.

ответ

1

Определение класса, который должен содержать ваши данные строки

public class ReportData 
{ 
    public int ReportID; 
    public string ReportName; 
    public string SProc; 
    public string SQLView; 
} 

использование, что класс для создания List<ReportData>

List<ReportData> myReportData = new List<ReportData>(); 
using(SqlConnection con = new SqlConnection(...)) 
using(SqlCommand cmd = new SqlCommand("SELECT * from tblManagerReports", con)) 
{ 
    con.Open(); 
    using(SqlDataReader reader = cmd.ExecuteReader()) 
    { 
     while(reader.Read()) 
     { 
      ReportData rpt = new ReportData(); 
      rpt.ReportID = Convert.ToInt32(reader[0]); 
      rpt.ReportName = reader[1].ToString(); 
      rpt.SProc = reader[2].ToString(); 
      rpt.SQLView = reader[3].ToString(); 
      myReportData.Add(rpt); 
     } 

    } 
} 

, наконец, использовать этот список в качестве источника данных для выпадающего списка

comboBox1.DataSource = myReportData; 
comboBox1.ValueMember = "ReportID"; 
comboBox1.DisplayMember = "ReportName"; 

Вы можете получить информацию, используя коллекцию Items, как в этом пример

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e) 
{ 
    MyReportData rpt = ComboBox1.SelectedItem as MyReportData; 
    if(rpt != null) 
    { 
     ... 
    } 
} 
Смежные вопросы