У меня есть Gridview с программно добавленными распадающимися списками на rowdatabound к каждой ячейке. Выпадающие списки и сохранить их в базе данных.
Однако, когда я нажимаю на кнопку, это вызывает возврат и удаляет все элементы управления в Gridview и, следовательно, ни один из них не может быть найден в моем кнопке. Не могу, казалось, что можно сохранить выпадающие списки или данные, когда я нажимаю кнопку.
Код: Выделить всё
edit 2:
Поставляемый код:
Это когда я связываю выпадающие списки:
Это происходит, когда я связываю списки выпадающих списков:
Код: Выделить всё
protected void gv_Rota_RowDataBound(object sender, GridViewRowEventArgs e)
{
for (int i = 1; i
Это когда я создаю Gridview, зависит от количества проходящих столбцов: < /p>
private void BindGrid(int Amount)
{
gv_Rota.DataSource = null;
gv_Rota.Columns.Clear();
BoundField bfield = new BoundField();
bfield.HeaderText = "Days";
bfield.DataField = "Days";
gv_Rota.Columns.Add(bfield);
for (int i = 0; i < Amount; i++)
{
int week = i + 1;
string sWeek = "Week " + week.ToString();
TemplateField tfield = new TemplateField();
tfield.HeaderText = sWeek;
gv_Rota.Columns.Add(tfield);
}
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Days", typeof(string)));
dt.Rows.Add("M");
dt.Rows.Add("T");
dt.Rows.Add("W");
dt.Rows.Add("T");
dt.Rows.Add("F");
dt.Rows.Add("S");
dt.Rows.Add("S");
gv_Rota.DataSource = dt;
gv_Rota.DataBind();
}
< /code>
Здесь я получаю выбранную сумму столбцов и вызываю метод для создания Gridview, я также храню сумму в кэше: < /p>
protected void ddl_RotaAmountOfWeeks_SelectedIndexChanged(object sender, EventArgs e)
{
if (IsPostBack)
{
int Amount;
int.TryParse(ddl_RotaAmountOfWeeks.SelectedItem.ToString(), out Amount);
ColumnCount = Amount;
Cache.Add("columnCount", ColumnCount, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 60, 0), CacheItemPriority.Default, null);
BindGrid(Amount);
}
}
< /code>
Код кнопки: < /p>
protected void btn_AddRota_Click(object sender, EventArgs e)
{
//My first attempt at trying to save the GridView, realising I Cache'd the GridView before selecting items.
//gv_Rota = (GridView)Cache["cacheGridView"];
//Set of the size of the array to the amount of rows * colums
//this will be the maximum amount of events added
int arraysize = gv_Rota.Rows.Count * (int)Cache["columnCount"];
//the current array item being added
int arrayitem = 0;
//Finally an array of ROTA_EVENTS to pass to WCF
wsPersonnel.DC_WFM_ROTA_EVENTS[] arrayofRotaEvents = new wsPersonnel.DC_WFM_ROTA_EVENTS[arraysize];
foreach (GridViewRow row in gv_Rota.Rows)
{
for (int i = 1; i
Подробнее здесь: [url]https://stackoverflow.com/questions/24138499/gridview-still-being-refreshed-when-not-in-updatepanel[/url]