2016-05-24 4 views
0

У меня проблема с отображением данных в зависимости от выбранных элементов в DropDownList. У меня есть таблица с, например, equipment -колонкой и индексной колонкой primekey. DDL имеет только отдельные значения, и я хочу показать все выбранные данные в новом gridview.Отображать данные в виде сетки в зависимости от SelectedItem в DropDownList (asp.net/C#)

мой код выглядит следующим образом:

public partial class _Default : Page 
{ 
    OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["OLEDB"].ToString()); 
    OleDbDataAdapter datapter; 
    DataSet dset; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      string queryGV = "SELECT * FROM table time > current_timestamp -20 AND EQUIPMENT != 'sth' ORDER BY time DESC"; 
      string queryDLL1 = "SELECT DISTINCT EQUIPMENT FROM table ORDER BY EQUIPMENT"; 


      OleDbCommand cmdGV = new OleDbCommand(queryGV, conn); 
      OleDbCommand cmdDLL1 = new OleDbCommand(queryDLL1, conn); 

      DataSet ds = new DataSet(); 
      DataSet DLL1 = new DataSet(); 

      OleDbDataAdapter da = new OleDbDataAdapter(cmdGV); 
      OleDbDataAdapter daDLL1 = new OleDbDataAdapter(cmdDLL1); 

      da.Fill(ds); 
      daDLL1.Fill(DLL1); 

      GridView1.DataSource = ds; 
      DropDownList1.DataSource = DLL1; 

      GridView1.DataBind(); 
      DropDownList1.DataBind(); 
      DropDownList1.Items.Insert(0, new System.Web.UI.WebControls.ListItem("Select Teil", "0")); 
      GridViewBind(); 

      conn.Close(); 
     } 
    } 

    protected void OnSelectedIndexChanged_DropDownList1(object sender, EventArgs e) 
    { 
     string valtxt = DropDownList1.SelectedItem.ToString(); 

     if (DropDownList1.SelectedIndex != 0) 
     { 
      GridViewBind(); 
     } 
    } 
} 

ошибка происходит в этой функции:

public void GridViewBind() 
{ 
    datapter = new OleDbDataAdapter("select equipment, primekey from PI_EVENT_TABLE where primekey=" + DropDownList1.SelectedValue + "", conn); 
    dset = new DataSet(); 
    datapter.Fill(dset); 
    GridView1.DataSource = dset.Tables[0]; 
    GridView1.DataBind(); 
} 

ответ

0

Существует ошибка форматирования строки в строке ниже:

datapter = new OleDbDataAdapter("select equipment, primekey from PI_EVENT_TABLE where primekey=" + DropDownList1.SelectedValue + "", conn); 

использование, как это

если primekey значение строкового типа

datapter = new OleDbDataAdapter("select equipment, primekey from PI_EVENT_TABLE where primekey="' + DropDownList1.SelectedValue + '", conn); 

или

если primekey значение целого типа

datapter = new OleDbDataAdapter("select equipment, primekey from PI_EVENT_TABLE where primekey=" + DropDownList1.SelectedValue.ToString(), conn); 
+0

хорошо спасибо за ваш ответ, но теперь он говорит, что в этой строке есть ошибка: 'datapter.Fill (dset);' у вас есть пример кода, который может соответствовать моим критериям: /? –

+0

Это может быть помощь. Проводка другого ответа. –

0
OleDbConnection conn = new OleDbConnection(ConfigurationManager.ConnectionStrings["OLEDB"].ToString()); 
    OleDbDataAdapter datapter; 
    DataSet dset; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      string queryGV = "SELECT * FROM table time > current_timestamp -20 AND EQUIPMENT != 'sth' ORDER BY time DESC"; 
      string queryDLL1 = "SELECT DISTINCT EQUIPMENT FROM table ORDER BY EQUIPMENT"; 


      OleDbCommand cmdGV = new OleDbCommand(queryGV, conn); 
      OleDbCommand cmdDLL1 = new OleDbCommand(queryDLL1, conn); 

      DataSet ds = new DataSet(); 
      DataSet DLL1 = new DataSet(); 

      OleDbDataAdapter da = new OleDbDataAdapter(cmdGV); 
      OleDbDataAdapter daDLL1 = new OleDbDataAdapter(cmdDLL1); 

      da.Fill(ds); 
      daDLL1.Fill(DLL1); 

      GridView1.DataSource = ds; 
      DropDownList1.DataSource = DLL1; 

      GridView1.DataBind(); 
      DropDownList1.DataBind(); 
      DropDownList1.Items.Insert(0, new System.Web.UI.WebControls.ListItem("Select Teil", "0")); 
      //GridViewBind(); 

      conn.Close(); 
     } 
    } 

    protected void OnSelectedIndexChanged_DropDownList1(object sender, EventArgs e) 
    { 
     string valtxt = DropDownList1.SelectedItem.ToString(); 

     if (DropDownList1.SelectedIndex != 0) 
     { 
      GridViewBind(); 
     } 
    } 

    private void GridViewBind() 
    { 
     string query = "select equipment, primekey from PI_EVENT_TABLE where primekey=" + DropDownList1.SelectedValue.ToString(); 
     conn.Open(); 
     datapter = new OleDbDataAdapter(query, conn); 
     dset = new DataSet(); 
     datapter.Fill(dset); 
     GridView1.DataSource = dset.Tables[0]; 
     GridView1.DataBind(); 
     conn.Close(); 
    } 
+0

хорошо спасибо помощнику за ваши усилия, но он, похоже, не работает так: /. Я точно не знаю, почему именно. Если я комментирую 'GridViewBind();' out whithin 'OnSelectedIndexChanged_DropDownList1' -функция, я не получаю никаких ошибок, но также и никаких данных. В вашей версии с комментариями 'GridViewBind();' из 'Page-Load' я просто получаю ВСЕ данные: /. Возможно, это поможет вам решить эту проблему:/ Но я просто хочу получить данные, выбрав его из DDL .. :) –

0
public void GridViewBind() 
{ 
    string connectionString = ConfigurationManager.ConnectionStrings["OLEDB"].ToString(); 
    string selectCommand = "SELECT equipment, primekey FROM PI_EVENT_TABLE WHERE primekey = " 
    + DropDownList1.SelectedValue; 

    DataTable table = new DataTable(); 

    using(var con = new OleDbConnection(connectionString)) 
    using(var command = new OleDbCommand(selectCommand, con)) 
    { 
     con.Open(); 

     try 
     { 
      table.Load(command.ExecuteReader()); 
      GridView1.DataSource = table; 
      GridView1.DataBind(); 
     } 
     catch(Exception) // place break point here to see if you have exceptions 
     { 
      throw; 
     } 
    } 
} 

Также вы должны переименовать GridView и DropDownList в то более конкретное например, GridViewEquipment или что-то в этом роде

+0

да:/i, к сожалению, или это неправильно? –

+0

нет, у вас должно быть это на самом деле, я просто подумал, что у вас есть это на false – ChenChi

+0

да, я так и думал .. Если я комментирую 'GridViewBind();' out whithin 'OnSelectedIndexChanged_DropDownList1' -функция, я не получаю никакой ошибки , но также нет данных. В вашей версии с комментариями «GridViewBind();« из «Загрузка страницы» я просто получаю ВСЕ данные: /. Может быть, это поможет вам решить это:/Но я просто хочу получить данные, выбрав его из DDL .. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^