我的ASP页面代码:
<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>班级代码:
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事件?
发布于 2010-04-27 15:25:25
也许试一试:
protected void Page_Load(object sender, EventArgs e)
{
sgvConversionResults.DataBind();
}但是,您的代码似乎有点复杂,您使用ObjectDataSource的特殊原因是什么?因为可以将datatable直接绑定到代码背后的网格视图中。
发布于 2010-04-28 07:49:16
我用resultDataSource传输ViewState和这个工作的成功!
https://stackoverflow.com/questions/2722355
复制相似问题