我有一个gridView table (using ASP.NET 3.5)
,它使用来自我的SQL DB的SqlDataSource
对象(根据不同的授权规则动态更改)动态变化(更多/更少的信息是检索)。为动态创建的GridView上的特定列禁用SortExpression
在GridView中,我设置了AllowSorting=true
,它的工作完美。
我的问题是: 我想disable Sorting
特定的列(如照片),我理解它是通过设置来完成:
myGrid.Columns[i].SortExpression = "";
只是,当我试图访问这个特定的列,我得到的错误: `索引超出界限(列还不存在!)。
我试图连接到下列事件:
- 的RowDataBound
- RowataBinding
,它仍然没有工作。 如何访问特定列(一旦它动态创建)并禁用它的排序?
下面是摘录:
ASPX Page:
<asp:GridView ID="gridNew" runat="server" AllowPaging="True"
AllowSorting="True" EnableModelValidation="True">
.CS Page:
protected void btnSend_Click(object sender, EventArgs e)
{
gridNew.DataSourceID = "Employees_DataSource";
switch (ddlSelection.SelectedValue)
{
case "Admin":
Employees_DataSource.SelectCommand = @"SELECT * FROM [Employees]";
gridNew.AutoGenerateDeleteButton = true;
gridNew.AutoGenerateEditButton = true;
gridNew.DataBind();
//gridNew.Columns[1].SortExpression = "";
// This is not working!! :(
break;
case "Manager": ...
default:
break;
}
谢谢! :) Mitsy。
嗨!通过做您的解决方案,并禁用排序逻辑,我真的不*禁用*列标题出现一个按钮(“排序”),只有使其保持点击,但什么都不做。任何想法如何我实际上可以防止它出现作为一个按钮? (如标签)。 – user1268741 2012-03-14 12:30:22
@ user1268741:编辑我的答案。您应该显示动态创建网格的方式和位置。 – 2012-03-14 12:48:31
这些列是使用SqlDataSource对象动态创建的。它完美的工作,我唯一的问题是与排序。其他解决方案? :\ – user1268741 2012-03-14 14:13:52