【问题标题】:Have one PageIndexChanging that control more than one Gridview Asp.net C#拥有一个控制多个 Gridview Asp.net C# 的 PageIndexChanging
【发布时间】:2023-03-11 06:23:01
【问题描述】:

我只想知道是否有可能拥有一个PageIndexChanging 来控制多个Gridview,如附图所示。 Gridview 中的数据绑定来自同一张表,我决定将其分成 3 个 Gridview,以便更好地显示数据。我想要一个 PageIndexChanging 来控制 3 个 Gridview。

填充网格视图的 C# 代码

using (SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["Molecular"].ConnectionString))
 {
                con.Open();

                // Sample Result Mutation Results Details

       using (SqlCommand cmd1 = new SqlCommand(@"SELECT *
                                                            FROM
                                                                    MutationResults 
                                                            WHERE

                                                             SampleBranchID=@SampleBranchID ", con))
         {

            cmd1.Parameters.AddWithValue("@SampleBranchID", lblSampleBranchID.Text);
             DataTable dt1 = new DataTable();
             SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
             da1.Fill(dt1);
              if (dt1 != null && dt1.Rows.Count > 0)
                {
                        GridViewMYD88.DataSource = dt1;
                        GridViewMYD88.DataBind();
                        GridViewNOTCH1.DataSource = dt1;
                        GridViewNOTCH1.DataBind();
                        GridViewSF3B1.DataSource = dt1;
                        GridViewSF3B1.DataBind();

                    }
                }
         con.Close();
    }

【问题讨论】:

  • 好吧,在这种情况下你有 sender 参数,也许这会对你有所帮助

标签: c# asp.net gridview


【解决方案1】:

是的,您可以通过将sender 转换回 GridView 来为所有 GridView 创建一个方法。

protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    //cast the sender back to a gridview
    GridView gv = sender as GridView;

    //set the new page index to the gridviw
    gv.PageIndex = e.NewPageIndex;

    //make sure you rebind the correct data per gridview
    gv.DataSource = LoadDataTableFromDB();

    //rebind the data
    gv.DataBind();
}

public static DataTable LoadDataTableFromDB()
{
    string query = "select * from dtabase";

    DataTable dt = new DataTable();

    using (SqlConnection connection = new SqlConnection(connectionString))
    using (SqlDataAdapter adapter = new SqlDataAdapter(query, connection))
    {
        try
        {
            adapter.Fill(dt);
        }
        catch
        {
        }
    }

    return dt;
}

您只需确保为每个 GridView 重新绑定正确的 DataSource。如果您对所有三个只有一个,那么只需重新绑定数据。

【讨论】:

  • 感谢您的回复。在下面添加您的建议//确保为每个 gridview gv.DataSource = GridViewMYD88.ID 重新绑定正确的数据; gv.DataSource = GridViewNOTCH1.ID; gv.DataSource = GridViewSF3B1.ID; //重新绑定数据 gv.DataBind();但是报错“数据源不支持服务器端数据分页。”
  • 数据源应该和你第一次在Page_load中绑定网格时一样。我只添加了getCorrectSourceDataByID 作为示例。
  • 我添加了这个 gv.DataSource = GridViewMYD88(gv.ID); gv.DataSource = GridViewNOTCH1(gv.ID); gv.DataSource = GridViewSF3B1(gv.ID);我有错误“不可调用的成员不能像方法一样使用”。任何建议如何解决这个问题。谢谢
  • 显示您现在如何用数据填充网格视图(通过编辑您的问题)
  • 我在帖子中添加了 C# 代码。谢谢
猜你喜欢
  • 2011-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
相关资源
最近更新 更多