Я совершенно новичок в 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;
}