Ответ 1
Это скорее алгоритм, чем кодированное решение.
Мне нравится использовать отдельный класс, говорящий MyData.cs, чтобы управлять моими обновлениями данных и передавать элементы пользовательского интерфейса через методы этого класса. Я как хранимые процедуры, но вы можете создавать запросы в своем проекте.
Если есть различия между видимыми элементами управления, я бы рекомендовал:
MyBindingMethod(array[] of the controls){
// Loop through array updating data.
// Or loop through array and call a second method to update the data.
}
Динамически вы можете проверить видимость элементов управления, а затем добавить их в массив или не перейдите к методу привязки.
Если элементы управления, которые меняют видимость, постоянны, вы можете использовать два отдельных метода, для выборочного обновления:
MyBindingMethodAll(){
// Update all controls.
}
MyBindingMethodVisible(){
// Update controls that remain visible.
}
Затем вызовите методы из MyData.cs из aspx.cs. Хитрость заключается в том, чтобы поддерживать контроль за привязкой данных в С#, и вы можете точно определить, что обновляется, где и когда.
Я рад предоставить более подробный рабочий пример, если вы можете предоставить больше кода.
Изменить обновление, чтобы помочь в уточнении решения
Используя отдельный класс для управления привязкой данных, элемент отображения может быть передан методу этого отдельного класса. Я использовал хранимые процедуры.
класс ManageDatap >
public static void SelectAllSomething(DropDownList list)
{
// Clear any previously bound items.
list.Items.Clear();
// SqlConnection.
SqlConnection con = new SqlConnection(conString);
// Create new command and parameterise.
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "MyStoredProcedure";
cmd.Connection = con;
try
{
// Open connection and bind data to GUI.
con.Open();
list.DataSource = cmd.ExecuteReader();
list.DataTextField = "Name";
list.DataValueField = "ID";
list.DataBind();
}
catch (Exception ex)
{
throw ex;
}
finally
{
con.Close();
con.Dispose();
}
}
От вас aspx.cs вызовет метод из класса ManageData.
ManageData.SelectAllCat(MyDropDownList);
Использование этого же принципала. Не видя своего макета, я могу дать вам пример концепции.
- если у вас есть TextBoxes, которые вы хотите контролировать.
TextBox1, TextBox2, TextBox3,.../
public static void AddText(List<TextBox> MyTextBoxes)
{
for(int i=0; i<MyTextBoxes.Count();i++){
MyTextBoxes.[i].Text = // What means you are using.
}
}
Из aspx.cs
public List<TextBox> FindVisibleTextBoxes(){
List<TextBox> MyTextBoxes = new List<TextBox>();
if(TextBox1.Visible== true){
MyTextBoxes.Add(TextBox1);
}
return MyTextBoxes;
}
Передать текстовый список в метод из ManageData.
Это может быть лучше модульным, в соответствии с вашими потребностями, и вы можете передать более одного списка или список объектов, чтобы пройти через гетерогенное сочетание элементов управления.
Это всего лишь одна концепция, есть много способов обойти вещи. Надеюсь, вы сочтете это полезным, чтобы разработать больше способов решить свою дилемму.