asp.net - 使用 OnDataBound asp:net gridview 合并单元格后对网格视图进行排序
问题描述
private void GridViewBind()
{
SqlConnection Dbcon = new SqlConnection();
Dbcon.ConnectionString = ConfigurationManager.ConnectionStrings[
"ConnectionString"].ConnectionString;
Dbcon.Open();
string expSql = "SELECT [dName],[item],[cnt] FROM [Test1].[dbo].[Test3]
ORDER BY [dName], [cnt] desc";
SqlDataAdapter adAdapter = new SqlDataAdapter(expSql, Dbcon);
DataSet ds = new DataSet();
adAdapter.Fill(ds);
GridView.DataSource = ds.Tables[0];
GridView.DataBind();
ViewState["dt"] = ds.Tables[0];
ViewState["sort"] = "Desc";
}
我使用 gridview(asp:gridview) 绘制了一个表格,并创建了一个用于测试的数据库并绑定它然后,为了合并具有相同主题的单元格,使用 OnDataBound 合并单元格。
单击 cnt 时,我想按合并的主题进行排序但是,我的排序代码对整个 cnt 列进行排序,并且合并的单元格被解开。
我需要一种方法来保留合并的单元格并在其中进行 ASC/DESC 排序!
protected void OnDataBound(object sender, EventArgs e)
{
for (int i = GridView2.Rows.Count - 1; i > 0; i--)
{
GridViewRow row = GridView2.Rows[i];
GridViewRow previousRow = GridView2.Rows[i - 1];
int j = 0;
if (row.Cells[j].Text == previousRow.Cells[j].Text)
{
if (previousRow.Cells[j].RowSpan == 0)
{
if (row.Cells[j].RowSpan == 0)
{
previousRow.Cells[j].RowSpan += 2;
}
else
{
previousRow.Cells[j].RowSpan = row.Cells[j].RowSpan + 1;
}
row.Cells[j].Visible = false;
}
}
}
}
解决方案
我没有评论的声誉,所以我在这里评论回答。您可以在合并主题的位置添加 OnDataBound 代码吗?您也可以使用合并主题作为列进行选择查询,然后只需将数据直接绑定到gridview。
对于排序,您可以点击以下链接:
https://www.c-sharpcorner.com/UploadFile/b8e86c/paging-and-sorting-in-Asp-Net-gridview/
推荐阅读
- java - 检索数据并等待时间检查数据库中是否出现新内容
- c++ - 如何在 C++ 中实现一个函数作为一些可选参数?
- sql - 我们如何将外部表从一个模式复制到同一个 postgresql 数据库中的另一个模式
- kubernetes - 高负载下的 Kube Cluster 连接外部服务时出现超时错误
- c - 应该检查非数字的代码在 c 中不起作用
- python - 我无法将我的 Discord Python BOT 连接到语音通道,为什么?
- c# - Xamarin - 在特定 PC ResourceManager.GetString() 上始终返回默认cultureInfo 的字符串
- c# - 将 Datagrid Header Datatemplate 中的文本框绑定到筛选器属性
- python - 在某个置信百分位获得价值
- solr - TYPO3 异常:无法确定 pid