vs2003升级vs2005 DataGrid 排序问题

junlintianxia07 2009-07-21 11:06:18
我的aspx页面
<asp:datagrid id="MyDataGrid1" runat="server" Width="1050px" AllowSorting="True" AutoGenerateColumns="False"
PageSize="50" AllowPaging="True" ShowFooter="True" EnableViewState="False" OnSortCommand="MyDataGrid1_SortCommand">

<Columns>
<asp:TemplateColumn HeaderText="选择">
<HeaderStyle Width="50px"></HeaderStyle>
<ItemTemplate>
<FONT face="宋体">
<asp:HyperLink id="HyperLink1" runat="server">明细</asp:HyperLink></FONT>
</ItemTemplate>
</asp:TemplateColumn>

<asp:BoundColumn Visible="False" DataField="行政村" HeaderText="行政村"></asp:BoundColumn>

<asp:BoundColumn DataField="pname" HeaderText="姓名">

<HeaderStyle Width="50px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn Visible="False" DataField="性别" HeaderText="性别"></asp:BoundColumn>
<asp:BoundColumn DataField="medicareid" SortExpression="medicareid" HeaderText="医疗证号">
<HeaderStyle Width="100px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="billcode" SortExpression="billcode" HeaderText="单据编码">
<HeaderStyle Width="145px"></HeaderStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="billdate" SortExpression="billdate" HeaderText="单据日期" DataFormatString="{0:yyyy-MM-dd}">
<HeaderStyle Width="90px"></HeaderStyle>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
</asp:BoundColumn>
<asp:BoundColumn DataField="moneys" HeaderText="总费用" DataFormatString="{0:#,##0.00}">
<HeaderStyle Width="90px"></HeaderStyle>
<ItemStyle HorizontalAlign="Right"></ItemStyle>
<FooterStyle HorizontalAlign="Right"></FooterStyle>
</asp:BoundColumn>
</Columns>
</asp:datagrid>


后台cs
protected void MyDataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
DataSet ds = new DataSet ();
DataView dv = null;
try
{
if(!this.bind(out ds)) throw new ApplicationException("获取数据出错");
dv = new DataView (ds.Tables[0]);
dv.Sort = e.SortExpression;
this.MyDataGrid1.DataSource = dv;
MyDataGrid1.DataBind();


}
catch(Exception ex)
{
this.errMsg = ex.Message;
}
}


}


现在的问题是 在页面已经写了 SortExpression 的,如 单据日期这一列,可以自动排序,而现在我想在 总费用 列上面
加上 SortExpression="moneys" ,让总费用自动排序,但是一点击 ,页面的datagrid 就消失了,一片空白,我的系统是vs2003 升级到vs2005 的,不知道跟这个有没有关系,请高人赐教!
...全文
75 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
junlintianxia07 2009-07-21
  • 打赏
  • 举报
回复
结贴了 ,人人有分
junlintianxia07 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cpp2017 的回复:]
你是说这个事件都没触发?你清除一下项目,重新编码,再调试看看?
[/Quote]

高人谢谢,问题就在于EnableViewstate,哎,早知道vs2003 升级vs2005后,有这个问题,呵呵,忘了谢谢哦
junlintianxia07 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 cpp2017 的回复:]
你是说这个事件都没触发?你清除一下项目,重新编码,再调试看看?
[/Quote]
这个事件不触发的话,为什么原来在vs2003 下就已经有的排序在vs2005中还照样可以排序呢?如果不触发这个事件 ,那原来那三列怎么做到排序的啊,哎,郁闷啊高人
fanglong168 2009-07-21
  • 打赏
  • 举报
回复
帮顶一下!
junlintianxia07 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wubing1111 的回复:]
我的是根據線別和開始時間兩個都可以排序的,如果樓主衹是一個可以自己改一下代碼.
[/Quote]
我的datagrid好多列,我只列举了这几个,我的列都几乎都要加上排序,客户要求的啊
cpp2017 2009-07-21
  • 打赏
  • 举报
回复
EnableViewState="False"

改为True再试。
cpp2017 2009-07-21
  • 打赏
  • 举报
回复
你是说这个事件都没触发?你清除一下项目,重新编码,再调试看看?
wubing1111 2009-07-21
  • 打赏
  • 举报
回复
我的是根據線別和開始時間兩個都可以排序的,如果樓主衹是一個可以自己改一下代碼.
junlintianxia07 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cpp2017 的回复:]
跟踪一下,是不是取数据源那里出错了。
[/Quote]
楼上高人呢,我设置断点在
protected void MyDataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
。。。。
}
里面,但是断点无论如何都触发不到
wubing1111 2009-07-21
  • 打赏
  • 举报
回复
不用換啊,可以的.我在2005也可以排序啊.參考代碼.
  <asp:DataGrid ID = "dgShow" runat="server" Width = "100%" AllowPaging="True" PageSize="20" OnItemDataBound="dgShow_ItemDataBound" OnPageIndexChanged="dgShow_PageIndexChanged" AutoGenerateColumns="False" OnItemCommand="dgShow_ItemCommand" AllowSorting="True" OnSortCommand="dgShow_SortCommand">
<HeaderStyle Wrap ="False" BackColor="#336699" ForeColor = "White" BorderStyle="None" Font-Size="Larger" Height="20px"/>
<ItemStyle Wrap ="False"/>
<PagerStyle Visible="False" Mode="NumericPages" />
<Columns>
<asp:BoundColumn HeaderText="線別" DataField = "FLINE" SortExpression="FLINE"></asp:BoundColumn>
<asp:BoundColumn HeaderText="異常類別" DataField = "FSORTNAME"></asp:BoundColumn>

<asp:BoundColumn HeaderText="異常代碼名稱" DataField = "FDESC"></asp:BoundColumn>
<asp:BoundColumn HeaderText="責任單位" DataField = "FDUTYDEPART"></asp:BoundColumn>
<asp:BoundColumn HeaderText="開始時間" DataField = "FSTARTDATE" SortExpression="FSTARTDATE"></asp:BoundColumn>
<asp:BoundColumn HeaderText="結束時間" DataField = "FENDDATE"></asp:BoundColumn>
<asp:BoundColumn HeaderText="異常時間" DataField = "FEXCTIME"></asp:BoundColumn>
<asp:BoundColumn HeaderText="建檔時間" DataField = "FDATESN"></asp:BoundColumn>
<asp:TemplateColumn HeaderText = "修改">
<ItemTemplate>
<asp:LinkButton ID="lbtModify" CommandName = "modify" runat="server">修改</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText = "刪除">
<ItemTemplate>
<asp:LinkButton ID="lbtDel" CommandName = "delete" runat="server">刪除</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn Visible="False" DataField = "FID"></asp:BoundColumn>
<asp:BoundColumn Visible="False" DataField = "FSOL"></asp:BoundColumn>
<asp:BoundColumn Visible="False" DataField = "FDEPART"></asp:BoundColumn>
<asp:BoundColumn Visible="False" DataField = "FDATESN"></asp:BoundColumn>


</Columns>
</asp:DataGrid>

protected void Page_Load(object sender, EventArgs e)
{

if (!Page.IsPostBack)
{這裡要調用你綁定的DataGrid的代碼.}
}
protected void dgShow_SortCommand(object source, DataGridSortCommandEventArgs e)
{
if (ViewState["order"] == null)
{
ViewState["order"] = "ASC";
}
else
{
if (ViewState["order"].ToString() == "ASC")
{
ViewState["order"] = "DESC";
}
else
{
ViewState["order"] = "ASC";
}
}

DataSet ds = db.ReturnDS("EMSDB01", "SELECT FSORTNAME,FDESC,FDUTYDEPART,FID,FSTARTDATE,FENDDATE,FLINE,FEXCTIME,FSOL,FDEPART,FDATESN FROM (" + strShow + " UNION ALL " + strShow1 + ") H ORDER BY H.FSTARTDATE,H.FLINE DESC ");

if (ds.Tables[0].Rows.Count > 0)
{
this.lblError.Visible = false;
lblTotal.Text = ds.Tables[0].Rows.Count.ToString();
}
else
{
this.lblError.Visible = true;
}
ds.Tables[0].DefaultView.Sort = e.SortExpression + " " + ViewState["order"].ToString();

this.dgShow.DataSource = ds.Tables[0].DefaultView;
int nPage = 0;
nPage = dgShow.CurrentPageIndex;
dgShow.CurrentPageIndex = 0;
dgShow.DataBind();
//計算顯示頁數,並重新幫定數據
if ((nPage >= dgShow.PageCount) && (dgShow.PageCount > 0))
{
nPage = dgShow.PageCount - 1;
}
this.dgShow.CurrentPageIndex = nPage;
this.dgShow.DataBind();

db.ShowStats(dgShow, ds, labCurrent, labPage, lbtnFirst, lbtnNext, lbtnPrevious, lbtnLast);

}
cpp2017 2009-07-21
  • 打赏
  • 举报
回复
跟踪一下,是不是取数据源那里出错了。
Pig23 2009-07-21
  • 打赏
  • 举报
回复
在2005下重新拖一个gridview到页面上吧,重新绑定一下
junlintianxia07 2009-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jasondct 的回复:]
05 要换成 gridview了吧。  帮你顶。
[/Quote]
谢谢帮顶,我的datagrid 太多,索性没有换,就这么使着了,我的疑问就是 原本的那些还照样可以排序,但是新加个排序的,咋不起作用呢? 后台应该不用改吧,因为原来的可以排,说明后台是正确的,不懂,继续等待高人现身说法
jasondct 2009-07-21
  • 打赏
  • 举报
回复
05 要换成 gridview了吧。 帮你顶。

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧