在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中显示数据,点击事件,搜索页面

必须以某种方式保存数据。似乎在单击该按钮后,发生回发,您丢失了它。您可能会检查数据绑定触发的位置,确保在随后的回发中捕获它。

您可以做的另一件事是简单地将数据存储在会话变量中,并在回发时将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 .
}
}