在GridView中显示数据,点击事件,搜索页面
本文关键字:事件 搜索 显示 数据 GridView | 更新日期: 2023-09-27 18:06:17
我已经在我的页面上放置了一个gridview并将其链接到LinqDataSourceFemale(数据库的女性表),我有一个像下面这样的搜索事件代码
protected void ButtonSearch_Click(object sender, EventArgs e)
{
using(BerouDataContext Data = new BerouDataContext())
{
if (DropDownListGender.SelectedItem.Text == "Male")
{
int age = Convert.ToInt32(DropDownListAge.Text);
string education = DropDownListEducation.Text.ToString();
string maritalstatus = DropDownListMaritalStatus.Text.ToString();
//var religion = DropDownListReligion.Text.ToString();
string caste = DropDownListCaste.Text.ToString();
string city = DropDownListCity.ToString();
var SearchResultBoys = Data.Males.Where(tan =>
(tan.Age == age)
&& (tan.Education == education)
&& (tan.Group == maritalstatus)
&& (tan.Caste == caste));
GridViewMale.DataSourceID = "";
GridViewMale.DataSource = SearchResultBoys;
GridViewMale.DataBind();
}
else if (DropDownListGender.SelectedItem.Text == "Female")
{
int age = Convert.ToInt32(DropDownListAge.Text);
string education = DropDownListEducation.Text.ToString();
string maritalstatus = DropDownListMaritalStatus.Text.ToString();
//var religion = DropDownListReligion.Text.ToString();
string caste = DropDownListCaste.Text.ToString();
string city = DropDownListCity.ToString();
var SearchResultGirls = Data.Females.Where(tan =>
(tan.Age == age)
&& (tan.Education == education)
&& (tan.Group == maritalstatus)
&& (tan.Caste == caste));
GridViewFemale.DataSourceID = "";
GridViewFemale.DataSource = SearchResultGirls;
GridViewFemale.DataBind();
}
}
}
单击按钮后网格视图不出现,请帮助我。
必须以某种方式保存数据。似乎在单击该按钮后,发生回发,您丢失了它。您可能会检查数据绑定触发的位置,确保在随后的回发中捕获它。
您可以做的另一件事是简单地将数据存储在会话变量中,并在回发时将gridview与数据重新绑定。
第一次检索数据时,您可以将其分配给会话变量:
Session.Add("searchResultBoys", SearchResultBoys);
Session.Add("searchResultGirls", SearchResultGirls);
然后,例如在随后的页面加载中,您可以:
GridViewMale.DataSource = (DataTable)Session[searchResultBoys]; //be sure to cast whatever the datasource is, in my example I just used DataTable
GridViewFemale.DataSource = (DataTable)Session[searchResultGirls];
编辑:因此,为了在会话变量中持久化数据,我们必须将var SearchResultBoys和SearchResultGirls保存到一个类型中(在本例中是一个数据表)。因为在会话中保存var只会保存查询表达式,而不是结果集。试着把你的var SearchResultBoys和SearchResultGirls转换成这样:
IEnumerable<DataRow> SearchResultsBoys = Data.Males.Where(tan =>
(tan.Age == age)
&& (tan.Education == education)
&& (tan.Group == maritalstatus)
&& (tan.Caste == caste));
然后我们可以把结果赋值给一个数据表(它可以存储在内存中)并持久化。
DataTable dt = SearchResultsBoys.CopyToDataTable<DataRow>();
现在你可以像以前一样绑定数据了:
GridViewMale.DataSourceID = "";
GridViewMale.DataSource = SearchResultBoys;
GridViewMale.DataBind();
一旦这在女孩和男孩数据上为您工作,然后我可以向您展示如何使用会话或全局变量进行持久化。
删除GridViewFemale.DataSourceID = "";
行
是否将gridview
绑定在!IsPostBack
的页面加载中?
如果不绑定,请在里面绑定gridview
!IsPostBack
in pageload
event
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
// here is Bind gridview code .
}
}