首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分页ObjectDataSource

分页ObjectDataSource
EN

Stack Overflow用户
提问于 2010-04-27 15:08:56
回答 2查看 772关注 0票数 0

我的ASP页面代码:

代码语言:javascript
复制
  <asp:ObjectDataSource runat="server" ID="odsResults" OnSelecting="odsResults_Selecting" />
    <tr><td>
    <wssawc:SPGridViewPager ID="sgvpPagerTop" runat="server" GridViewId="sgvConversionResults" />
    </td></tr>
    <tr>
        <td colspan="2" class="ms-vb">
            <wssawc:SPGridView 
                runat="server" 
                ID="sgvConversionResults" 
                AutoGenerateColumns="false"
                RowStyle-CssClass=""
                AlternatingRowStyle-CssClass="ms-alternating" 
                />
        </td>
    </tr>

班级代码:

代码语言:javascript
复制
public partial class Convert : System.Web.UI.Page

{
   ...
   private  DataTable resultDataSource = new DataTable();
   ...

  protected void Page_Init(object sender, EventArgs e)
    {
        ...

        resultDataSource.Columns.Add("Column1");
        resultDataSource.Columns.Add("Column2");
        resultDataSource.Columns.Add("Column3");
        resultDataSource.Columns.Add("Column4");
        ...
        odsResults.TypeName = GetType().AssemblyQualifiedName;
        odsResults.SelectMethod = "SelectData";
        odsResults.SelectCountMethod = "GetRecordCount";
        odsResults.EnablePaging = true;
        sgvConversionResults.DataSourceID = odsResults.ID;
        ConversionResultsCreateColumns();
        sgvConversionResults.AllowPaging = true;
        ...
    }

    protected void btnBTN_Click(object sender, EventArgs e)
    {
        // add rows into resultDataSource
    }

    public DataTable SelectData(DataTable ds,int startRowIndex,int maximumRows)
    {
        DataTable dt = new DataTable();

        dt.Columns.Add("Column1");
        dt.Columns.Add("Column2");
        dt.Columns.Add("Column3");
        dt.Columns.Add("Column4");

        for (int i =startRowIndex; i<startRowIndex+10 ;i++)
        {   
            if (i<ds.Rows.Count)
            {
                dt.Rows.Add(ds.Rows[i][0].ToString(), ds.Rows[i][1].ToString(),
                ds.Rows[i][2].ToString(), ds.Rows[i][3].ToString());
            }
        }
        return dt;
    }

    public int GetRecordCount(DataTable ds)
    {
        return ds.Rows.Count;
    }

    protected void odsResults_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        e.InputParameters["ds"] = resultDataSource;

    }

}

单击该按钮,resultDataSource将收到一些行。页面重新加载,我们可以在sgvConversionResults中看到结果。前十排。但在寻呼机中单击下一页后,我们会收到消息:“在此视图中没有显示任何项目”。当我尝试调试时,我发现在postBack页面(点击下一页)输入参数"ds“为空白,ds.Rows.Count = 0等等.仿佛resultDataSource变成了空(我做错了什么?

onPostBack所有变量都获得默认值,sgvConversionResults保存其结构,但有清晰的行。如何保存sgvConversionResults数据onPostBack事件?

EN

回答 2

Stack Overflow用户

发布于 2010-04-27 15:25:25

也许试一试:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    sgvConversionResults.DataBind();
}

但是,您的代码似乎有点复杂,您使用ObjectDataSource的特殊原因是什么?因为可以将datatable直接绑定到代码背后的网格视图中。

票数 1
EN

Stack Overflow用户

发布于 2010-04-28 07:49:16

我用resultDataSource传输ViewState和这个工作的成功!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2722355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档