留言簿

我要留言
留言搜索

2010-07-29 09:31  eric

protected void pager_PageChanged(object sender, EventArgs e)
        {
            SelectHotel(AspNetPager1.CurrentPageIndex);
        }

AspNetPager1.CurrentPageIndex取出的值都是为1.
这是什么问题.页数是正确的
回复:您好,您的代码太少,另外问题描述得不是很清楚,无法知道具体原因,如果您用默认的Postback分页方式,一般来说出现这个问题是因为没有将数据绑定代码放在if(!IsPostBack)块中导致的。

2010-07-28 14:55  求助:修改源码问题。接上个问题

我再尝试修改源码时,再文件中注意到这么一句话:
public int EndRecordIndex
        {
            get
            {
                return StartRecordIndex - RecordsRemain;
            }
        }

整个项目太大了,没有太多的精力去仔细研究,我感觉这行代码改成如下格式,应该可以解决当
RecordCount=0时,aspnetpager无法使用的问题(具体描述见上一个留言,bug提交的那个)
public int EndRecordIndex
        {
            get
            {
                return StartRecordIndex + PageSize;
            }
        }
但是我再编译测试时,系统提示:

错误	1	对程序集“C:\Users\Administrator\Desktop\AspNetPager732Src\obj\Release\AspNetPager.dll”签名时加密失败 --“读取密钥文件“c:\Users\Administrator\Desktop\AspNetPager732Src\aspnetpager.snk”时出错 -- 系统找不到指定的文件。 ”	Wuqi.Webdiyer.AspNetPager


求助,您能不能给我密钥文件,或者您帮我修改下程序,使他适应存储过程+输出参数的使用方式?
回复:您好,如果需要自己编译的话,密钥文件请用VS生成即可,在项目属性中可看到,很简单,谢谢!

2010-07-28 13:37  7.3.2版本重大Bug报告,新增!

发现7.3.20版本中存在一个bug:
当AspNetPager1.RecordCount的值为空(0)时,AspNetPager1.StartRecordIndex的值为1, AspNetPager1.EndRecordIndex的值为0,一般情况下,这里是没问题的,只要先得到总行数即可。

    但是存储过程是可以使用输入输出参数的,再一个存储过程中可以同时返回总行数和查询到的DataTable,此时AspNetPager1.RecordCount的赋值是晚于存储过程的执行的(只有存储过程执行完毕才能得到输出参数,)此时AspNetPager1.EndRecordIndex的值为0,造成了可以得到总行数,但是返回的是空的DataTable。
int Count;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
               //GetList();
            }
        }

        private void GetList()
        {
            this.Repeater1.DataSource = bll.GetList(model, AspNetPager1.StartRecordIndex, AspNetPager1.EndRecordIndex, ref Count);
            AspNetPager1.RecordCount = Count;
            this.Repeater1.DataBind();
        }

此代码中使用了输出参数,当执行bll.GetList方法后,AspNetPager1.RecordCount才能获取值,但是因为在执行bll.GetList方法前,(AspNetPager1.RecordCount值为0时)AspNetPager1.EndRecordIndex的值为0,这样就造成了一个现象,可以返回总行数,(AspNetPager1.RecordCount可以正确获取值),但是查询到了空的DataTable。只有点击第2页(或其他页时。)



另:后来发现此时aspnetpager控件不可用。(无法进行翻页,或者说翻页事件不起作用)
回复:您好,这不是bug,而是您不太理解分页控件的工作原理引起的问题。StartRecordIndex和EndRecordIndex都是只读属性,它们的值是分页控件根据RecordCount自动计算出来的,在您的例子中,您在RecordCount还没有具体的值的情况下,就把StartRecordIndex和EndRecordIndex直接传递给了存储过程,这时候这两个参数的值都是默认值,所以无法正确取出分页数据,您应该先取出要分页的记录总数并赋给RecordCount属性后再使用StartRecordIndex和EndRecordIndex属性的值来获取分页数据,这样就不会有问题了。谢谢!

2010-07-25 20:53  lt

请问用标准的URL分页,当记录数比较大的时候超过一万条,而且每条记录内容比较多,发现内存占用和CPU占用都比较偏高,我也不知道是否和我在调试运行有关系
回复:您好,这和您获取数据的方法有关,和分页控件没有任何关系,分页控件和数据没有直接关系。

2010-07-25 14:46  luming

环境:vs2010+ado.net ef
错误:仅对 LINQ to Entities 中已排序的输入支持方法“Skip”。必须在调用“Skip”方法之前调用方法“OrderBy”。
代码:contorller:
public ActionResult Index(int? id)
        {
  WeekReportDBEntities WR = new WeekReportDBEntities();
  var userDB = (from m in WR.WeekReport 
  where m.ReportName == "姓名"
                          select m);
            PagedList<WeekReport> userDB_view = userDB.ToPagedList(id ?? 1, 10);
   return View(userDB_view);
        }
view:
<%@ Import Namespace="Webdiyer.WebControls.Mvc"%>
<%@ Import Namespace="Weekly.Models"%>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Index
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>
        历史周报记录</h2>
    <table style="width: 100%" id="weektable">
        <tr>
            <th id="TRtime">
                周报时间
            </th>
            <th>
                任务内容
            </th>
            <th>
                备注
            </th>
            <th>
                完成情况
            </th>
            <th>
                重新计划
            </th>
            <th>
                需工时
            </th>
        </tr>
        <% foreach (WeekReport item in Model)
           { %>
        <tr>
            <td>
                <%: String.Format("{0:yyyy年MM月dd日 dddd}", item.ReportTime)%>
            </td>
            <td>
                <%: item.ReportContent %>
            </td>
            <td>
                <%: item.Remark %>
            </td>
            <td id="TRComplete">
                <%: item.Complete==0? "未开始":(item.Complete ==1? "未完成":"已完成") %>
            </td>
            <td id="TRAfresh">
                <%: item.Afresh==1?"星期一":(item.Afresh==2?"星期二":(item.Afresh==3?"星期三":(item.Afresh==4?"星期四":(item.Afresh==5?"星期五":(item.Afresh==6?"星期六":(item.Afresh==7?"星期天":"XXX")))))) %>
            </td>
            <td id="TRWorkTime">
                <%: item.WorkTime +"小时"%>
            </td>
        </tr>
        <% } %>
    </table>
  
回复:您好,错误原因中已经说得非常清楚了:您分页获取数据时的linq语句中必须用orderby对数据进行排序,然后才能使用ToPagedList这个扩展方法来生成分页数据,因为ToPagedList方法中用到了Skip这个扩展方法。谢谢!

2010-07-24 17:27  范

您好!
请教下这个问题.
AspNetPager1.CurrentPageIndex 出现异常用户代码未处理 System.NullReferenceException
不知道是哪里错了,搞了好久,就是不知道原因.
回复:很抱歉,您没有帖出任何代码,无法判断问题在哪里。

2010-07-24 10:39  luming

微软的webform,发展了一段时间之后又回归简单状态的原始web理念了(虽然asp.net mvc也在其他方面有所改进),linq会不会也重蹈这样的覆辙呢?linq可以修改自动生成的sql语句或者使用存贮过程呢?linq to sql 与ado.net ef或者还有其他的选择,那个与asp.net mvc搭配更合适呢?谢谢!
回复:应该不会,linq微软以后将不再升级和支持,转而将精力投入Entity Framework,我现在做的大部分项目仍然用linq,因为这些项目只用sql server,linq相对EF来说更高效、灵活和简单一些。不过较大的项目我会选择EF,这要考虑到以后的技术发展趋势以及数据迁移等。谢谢!

2010-07-23 23:18  luming

你好,我想问问asp.net mvc中的m层也很重要,在mvc2.0时候引入了强类型的数据显示和验证,很方便。但是使用微软的linq需要学习成本而且不能直接操作sql语句,试过强类型的dataset,但我只实现了强类型显示。想使用IBATIS(改了myBATIS)据说可以写sql和存贮过程,但是网上资料太少,找了一晚上连个环境都配不好,你能给我推荐我选个能实现数据库的实体映射的框架吗?谢谢
回复:您好,我也没用过IBATIS,对这个不了解,不过您说的linq不能直接操作sql语句是错误的,linq可以直接执行任何sql语句,有空可以看看scottgu的博客,从中可以学到不少东西。谢谢!

2010-07-23 01:40  yH

谢谢您  :)  呵呵  天天快乐!
回复:谢谢支持,也祝您快乐!

2010-07-22 16:24  chensirbbk

有没有好的图片上传控件咯!
回复:您好,您可以试试swfupload:http://swfupload.org/
;