У меня есть веб-часть, в функции createchildcontrols
она создает gridview
, вызывает хранимую процедуру и заполняет сетку. Один столбец gridView
- это командное поле, которое имеет значение ключа для элемента и передается другой веб-части на странице, чтобы показать подробности. Все работало нормально, пока они не хотели, чтобы я добавил возможность поиска в веб-часть списка.
Сначала казалось, что это работает, данные в столбцах отображаются так, чтобы отражать правильные результаты поиска, но поле команды сохраняет первоначальные значения при первой загрузке страницы без критериев поиска.
Кроме того, при выполнении поиска кажется, что он проходит через функцию createchildcontrols, заполняет gridview всеми элементами, а затем проходит по коду в btnSearch_Click
, где выполняется больше sql с определенными критериями поиска и gridview.
привязан к результатам поиска (кроме значений оригинального ключа в поле команды).
Есть идеи, как я все испортил?
Код от CreateChildControls
:
_view = new GridView();
this.Controls.Add(this._view);
_view.Caption = "Rate Quote Email";
_view.AutoGenerateColumns = true;
_view.DataKeyNames = new string[] { "XREF_ID" };
CommandField field = new CommandField();
_view.SelectedRowStyle.BackColor = Color.Red;
field.ShowSelectButton = true;
field.ButtonType = ButtonType.Link;
_view.Columns.Add(field);
_view.AllowPaging = true;
_view.PageSize = 20;
_view.AlternatingRowStyle.BackColor = Color.Cornsilk;
_view.PageIndexChanging += new GridViewPageEventHandler(_view_PageIndexChanging);
Код от btnSearch_Click
:
DataSet ds = new DataSet();
rdr = cmd.ExecuteReader();
ds.Clear();
_view.DataSource = null;
ds.Load(rdr, LoadOption.PreserveChanges, "");
rdr.Close();
rdr.Dispose();
_view.DataSource = ds.Tables[0];
_view.DataBind();
DataSet ds = new DataSet();
ds.Clear();
rdr = cmd.ExecuteReader();
ds.Load(rdr, LoadOption.PreserChanges, "");
rdr.Close();
rdr.Dispose();
_view.DataSource = null;
_view.DataSource = ds.Tables[0];
_view.DataBind();
ds.Dispose();
cmd.Dispose();
conn.Dispose();