Я использовал этот стиль программирования, который я видел в примере и только начал его использовать, потому что он выполняет свою работу ... Я хотел бы узнать мнение других программистов по этому поводу ...
То есть ситуация, когда у вас есть GridView или элемент управления на его основе, такой как RadGrid, и вы хотите отслеживать таблицу данных при добавлении, редактировании, переупорядочении и удалении строк.
Использование сеанса для хранения таблицы данных (или списка данных) может быть не лучшим решением, потому что пользователь может открыть две идентичные веб-страницы ... Использование ViewState для хранения данных может быть и вариант ... У меня есть использовал подход, подобный следующему:
public partial class DefaultPage : System.Web.UI.Page
{
protected DataLine DefaultDataLine()
{
DataLine dl = new DataLine();
dl = new DataLine();
dl.Number = 0;
dl.Title = "";
dl.Text = "";
return dl;
}
protected class DataLine
{
public int Number { get; set; }
public string Title { get; set; }
public string Text { get; set; }
}
protected static List<DataLine> tempLines;
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
tempLines = RadGridBindStartUpData();
}
}
protected void RadGrid1_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
RadGrid1.DataSource = tempLines;
}
protected void RadGrid1_InsertCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
GridEditableItem editedItem = e.Item as GridEditableItem;
List<DataLine> table = tempLines;
DataLine newRow = new DataLine ();
RadTextBox rtb;
rtb = (RadTextBox)editedItem.FindControl("RadTextBoxTitle");
newRow.Title = rtb.Text;
rtb = (RadTextBox)editedItem.FindControl("RadTextBoxDescription");
newRow.Description = rtb.Text;
RadNumericTextBox number = (RadNumericTextBox)editedItem.FindControl("RadNumericTextBoxNumber");
newRow.Number = number.Value.HasValue ? Convert.ToInt32(number.Value.Value) : 0;
table.Add(newRow);
}
// ...
Таким образом, используя статическую переменную List пользовательского объекта (класса), объявленного в выделенном коде страницы Aspx, и обновляя ее при каждом редактировании данных.
Что вы думаете об этом подходе? Это нормально? Как вы храните данные в формате таблицы для издания (до сохранения в базе данных)?