C# 冗长的Web部件问题

C# 冗长的Web部件问题,c#,asp.net,web-parts,C#,Asp.net,Web Parts,我有一个web部件,在createchildcontrols函数中,它创建一个gridview,调用一个存储过程并填充网格视图。gridView的一列是一个命令字段,其中包含一个项的键值,并传递给页面上的另一个web部件以显示详细信息。在他们希望我在列表web部件中添加搜索功能之前,一切都很正常 起初,这似乎是可行的,列中的数据反映了正确的搜索结果,但命令字段保留了最初加载页面时没有搜索条件的原始值 此外,在执行搜索时,它似乎会通过createchildcontrols函数,用所有项目填充gri

我有一个web部件,在
createchildcontrols
函数中,它创建一个
gridview
,调用一个存储过程并填充网格视图。
gridView
的一列是一个命令字段,其中包含一个项的键值,并传递给页面上的另一个web部件以显示详细信息。在他们希望我在列表web部件中添加搜索功能之前,一切都很正常

起初,这似乎是可行的,列中的数据反映了正确的搜索结果,但命令字段保留了最初加载页面时没有搜索条件的原始值

此外,在执行搜索时,它似乎会通过createchildcontrols函数,用所有项目填充gridview,然后在
btnSearch\u单击中运行代码,其中会使用特定搜索条件和gridview运行更多sql
与搜索结果重新绑定(但命令字段中的原始键值)

你知道我是怎么搞砸的吗

来自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);
代码来自b搜索\u单击

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();

您能从
CreateChildControls
方法和
btnSearch\u点击
方法发布相关代码吗?这将是查看我们是否能找到问题的最好方法,只是为了确保,第一部分是
CreateChildControls
,第二部分是
btn搜索单击
?是的,这是正确的。页面INDEXCHANGE是createchild控件的最后一行相关内容,下面的所有内容都来自btnsearch_click。您能否澄清一下,您是如何知道“原始键值”仍在命令字段中的?因为当我进行搜索,然后单击命令字段中的项目时,详细信息和ID显示在另一个web部件中,用于搜索前网格中项目的ID。您能否从
CreateChildControls
方法和
btnSearch\u Click
方法发布相关代码?这将是查看我们是否能找到问题的最好方法,只是为了确保,第一部分是
CreateChildControls
,第二部分是
btn搜索单击
?是的,这是正确的。页面INDEXCHANGE是createchild控件的最后一行相关内容,下面的所有内容都来自btnsearch_click。您能否澄清一下,您是如何知道“原始键值”仍在命令字段中的?因为当我进行搜索,然后单击命令字段中的项目时,详细信息和ID显示在其他web部件中,用于搜索前网格中项目的ID