Использовать один GridView / SqlDataSource для одного и того же запроса, но разных ConnectionStrings? Или несколько для каждой ConnectionString? - PullRequest
0 голосов
/ 03 мая 2019

Я совершенно новичок в ASP.NET и C #. Я хочу отобразить некоторую информацию из одной из многих баз данных в GridView. Запрос одинаков во всех случаях, но ConnectionString выбирается на основе DropDownList.

Мне было интересно, что лучше всего использовать в этом случае?

  • Могу ли я создать несколько SqlDataSources / GridView для каждой ConnectionString и изменить, какой из них сделать видимым или скрыть на основе выбора DropDownList?

  • Или я могу создать только один SqlDataSource / GridView и программно изменить ConnectionString на основе выбора DropDownList?

Я попробовал первый способ, и он отлично работает, но код выглядит загроможденным, так как есть много GridView, которые не используются большую часть времени. И когда я попробовал второй метод, он не прошел хорошо, так как я продолжаю получать следующую ошибку, когда пытаюсь программно изменить источник данных GridView, чтобы обновить его:

System.InvalidOperationException: DataSource и DataSourceID определены в GridViewCustomers. Удалить одно определение.

Я использовал следующий код, чтобы программно изменить ConnectionString SqlDataSource и DataSource GridView, чтобы обновить его (каждый раз, когда нажимается кнопка поиска, код проверяет DropDownList и пытается соответственно изменить соединения):


switch (DropDownList1.SelectedValue.ToString())
            {
                case "30":
                    SqlDataSourceCustomers.ConnectionString = ConfigurationManager.ConnectionStrings["DTconnection"].ConnectionString;
                    SqlDataSourceCustomers.SelectCommand = "DisplayCustomer";
                    SqlDataSourceCustomers.SelectCommandType = System.Web.UI.WebControls.SqlDataSourceCommandType.StoredProcedure;
                    SqlDataSourceCustomers.DataBind();
                    GridViewCustomers.DataSource = SqlDataSourceCustomers;
                    GridViewCustomers.DataBind();
                    GridViewCustomers.Visible = true;
                    break;


                case "20":
                    SqlDataSourceCustomers.ConnectionString= ConfigurationManager.ConnectionStrings["DWahconnection"].ConnectionString;
                    SqlDataSourceCustomers.SelectCommand = "DisplayCustomer";
                    SqlDataSourceCustomers.SelectCommandType = System.Web.UI.WebControls.SqlDataSourceCommandType.StoredProcedure;
                    SqlDataSourceCustomers.DataBind();
                    GridViewCustomers.DataSource = SqlDataSourceCustomers;
                    GridViewCustomers.Visible = true;
                    break;

                default:
                    GridViewCustomers.Visible = false;          
                    break;
            }
...