2015-10-27 3 views
0

Я все еще очень новичок в ASP.Net C#, у меня есть этот фрагмент кода, который отлично работает. У меня есть несколько строк подключения в файле web.config, и я переключаюсь между ними на основе текста моего выпадающего списка. Я надеялся на какой-нибудь совет любого метода очистки/уборки, чтобы архивировать это, а не то, что у меня ниже (если есть). Благодаря!ASP.NET C# Изменение строк подключения на основе выпадающего списка

protected void search_ClickALL(object sender, EventArgs e) 
{ 

    if (ddlALL.SelectedItem.Text == "ENWL") 
    { 
     using (
     SqlConnection conn = 
      new SqlConnection(ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString)) 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn); 
      try 
      { 
       SqlParameter search = new SqlParameter(); 
       search.ParameterName = "@JobnoALL"; 
       search.Value = JobnoALL.Text.Trim(); 
       cmd.Parameters.Add(search); 
       SqlDataReader dr = cmd.ExecuteReader(); 
       DataTable dt = new DataTable(); 
       dt.Load(dr); 
       gridviewALL.DataSource = dt; 
       gridviewALL.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 
      finally 
      { 
       if (cmd.ExecuteScalar() == null) 
       { 
        Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>"); 
       } 
       conn.Close(); 
       mpePopUpALL.Show(); 
      } 
     } 
    } 

    else if (ddlALL.SelectedItem.Text == "NW") 
    { 
     using (
     SqlConnection conn = 
      new SqlConnection(ConfigurationManager.ConnectionStrings["ConHprNorthumbrian"].ConnectionString)) 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn); 
      try 
      { 
       SqlParameter search = new SqlParameter(); 
       search.ParameterName = "@JobnoALL"; 
       search.Value = JobnoALL.Text.Trim(); 
       cmd.Parameters.Add(search); 
       SqlDataReader dr = cmd.ExecuteReader(); 
       DataTable dt = new DataTable(); 
       dt.Load(dr); 
       gridviewALL.DataSource = dt; 
       gridviewALL.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 
      finally 
      { 
       if (cmd.ExecuteScalar() == null) 
       { 
        Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>"); 
       } 
       conn.Close(); 
       mpePopUpALL.Show(); 
      } 
     } 
    } 


    } 

ответ

4

Создайте отдельную функцию и записать все свои бизнес-логику внутри него и получить строку соединения в качестве параметра на основе выпадающий пункт

protected void search_ClickALL(object sender, EventArgs e) 
{ 
    if (ddlALL.SelectedItem.Text == "ENWL") 
    { 
     ShowData(ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString.ToString()); 
    } 
    else if (ddlALL.SelectedItem.Text == "NW") 
    { 
     ShowData(ConfigurationManager.ConnectionStrings["ConHprNorthumbrian"].ConnectionString).ToString()); 
    } 
} 

private void ShowData(string connectionstring) 
{ 
    using (
     SqlConnection conn = 
      new SqlConnection(connectionstring)) 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn); 
      try 
      { 
       SqlParameter search = new SqlParameter(); 
       search.ParameterName = "@JobnoALL"; 
       search.Value = JobnoALL.Text.Trim(); 
       cmd.Parameters.Add(search); 
       SqlDataReader dr = cmd.ExecuteReader(); 
       DataTable dt = new DataTable(); 
       dt.Load(dr); 
       gridviewALL.DataSource = dt; 
       gridviewALL.DataBind(); 
      } 
      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 
      finally 
      { 
       if (cmd.ExecuteScalar() == null) 
       { 
        Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>"); 
       } 
       conn.Close(); 
       mpePopUpALL.Show(); 
      } 
     } 
} 
+0

Спасибо! Это именно то, что я искал – Cory

+0

@LiranBo: 'ddlALL.SelectedItem.Text' может не совпадать с ключом' ConnectionStrings'. Они могут быть разными, внимательно смотрятся в OP post, текст - ** ENWL **, но строка строки соединения ** ConHprENWL ** отличается. – Prabhat

+0

Чтобы использовать 'ddlALL.SelectedItem.Text', вы должны иметь точно такое же имя как в раскрывающемся тексте, так и в строке строки подключения в web.config. – Prabhat

0

вы делаете следующую операцию дважды:

 conn.Open(); 
     SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn); 

try 
     { 
      SqlParameter search = new SqlParameter(); 
      search.ParameterName = "@JobnoALL"; 
      search.Value = JobnoALL.Text.Trim(); 
      cmd.Parameters.Add(search); 
      SqlDataReader dr = cmd.ExecuteReader(); 
      DataTable dt = new DataTable(); 
      dt.Load(dr); 
      gridviewALL.DataSource = dt; 
      gridviewALL.DataBind(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
     } 
     finally 
     { 
      if (cmd.ExecuteScalar() == null) 
      { 
       Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>"); 
      } 
      conn.Close(); 
      mpePopUpALL.Show(); 
     } 

вместо этого сделать его как функцию и передать ваши SQLConnection соед функции в качестве аргумента.

также, когда вы используете инструкцию using, вам не нужно закрывать соединение.

1

Вы пишете то же время код multipule может сделать это в один раз в Switch случае

 string ConnectionString; 
     switch (comboBox1.SelectedIndex) 
     { 
      case 0: 
       ConnectionString = ConfigurationManager.ConnectionStrings["ConHprENWL"].ConnectionString 
       break; 
      case 1: 
       ConnectionString = ConfigurationManager.ConnectionStrings["XYZ"].ConnectionString 
       break; 

     } 
     SqlConnection Con = new SqlConnection(ConnectionString); 
     Con.Open(); 
/*YOUR CODE */ 
0

может просто использовать, если только выбрать строку соединения, вызвать остальные, кажется, то же самое.

protected void search_ClickALL(object sender, EventArgs e) 
{ 
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[ddlALL.SelectedItem.Text].ConnectionString)) 
{ 
    conn.Open(); 
    SqlCommand cmd = new SqlCommand("SELECT dpCreatedDT, enStatusCH, enNotificationNoNI FROM dp_enquiry WHERE ennotificationnoni = @JobnoALL", conn); 
    try 
    { 
     SqlParameter search = new SqlParameter(); 
     search.ParameterName = "@JobnoALL"; 
     search.Value = JobnoALL.Text.Trim(); 
     cmd.Parameters.Add(search); 
     SqlDataReader dr = cmd.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Load(dr); 
     gridviewALL.DataSource = dt; 
     gridviewALL.DataBind(); 
    } 
    catch (Exception ex) 
    { 
     Response.Write(ex.Message); 
    } 
    finally 
    { 
     if (cmd.ExecuteScalar() == null) 
     { 
      Page.ClientScript.RegisterStartupScript(this.GetType(), "scriptkey", "<script>alert('Job Number not found!');</script>"); 
     } 
     conn.Close(); 
     mpePopUpALL.Show(); 
    } 
    } 

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