【问题标题】:data pager in listview Issue列表视图中的数据寻呼机问题
【发布时间】:2013-04-09 03:25:31
【问题描述】:

我有一个列表视图,我在其中放置了 datapager,如下所示。 我正在使用 SQl 数据源并将记录绑定到 ListView。

asp:ListView runat="server" ID="ListView1" DataKeyNames="ProductId,GameName" DataSourceID="GameTable" OnItemCommand="On_Select_Item" 

和布局模板中的数据分页器

在项目模板中,我放置了一个按钮,当单击它时,它会调用我试图获取 DatakeyName 值的方法。给出寻呼机时,它在第一页工作正常,但是当移动到寻呼机中的其他页面时,它会抛出异常。 这是按钮点击代码,

protected void On_Select_Item(object sender, ListViewCommandEventArgs e)
    {

        if (String.Equals(e.CommandName, "AddtoCart"))
        {
            //checks if the user is logged in
            if (User.Identity.IsAuthenticated)
            {
                ListViewDataItem dataItem = (ListViewDataItem)e.Item;
                DropDownList dl = e.Item.FindControl("DropDownList") as DropDownList;
                String val="";

                if (dl != null)
                {
                    val = dl.SelectedValue; //Get the selected value from DropDownList
                }
                String price = Convert.ToString(e.CommandArgument).Trim(); //Get the price for the selected game.

-------------下面行抛出异常---------

          string ProductId =
            ListView1.DataKeys[dataItem.DataItemIndex]["ProductId"].ToString(); //Product Id for the selected game.
            string GameName = ListView1.DataKeys[dataItem.DataItemIndex]["GameName"].ToString(); //gamename

...............................
.............................

}

【问题讨论】:

  • 有什么例外?
  • 使用 DataPager 有什么特别的原因吗?您可以使用 gridview/listview 附带的内置分页和排序功能,并通过使用 sqldatasource(作为网格的数据提供者),您无需手动进行分页,它会自动处理分页、页面索引。
  • 我得到的异常是 ArgumentOutOfRange,我正在使用数据分页器,因为查询返回多条记录,我将检查内置分页并回复您
  • @TwinklingStar 一定要让我知道,以防您需要代码尖晶石,我已经多次使用该功能,它就像一个魅力。
  • @VishalSachdeva 你能发一下吗。

标签: c# asp.net


【解决方案1】:

先定义一个网格(可以把控件名改成listView但是实现是一样的)

 <asp:GridView runat="server" ID="grdResult" 
                    CellPadding="2" 
                    OnPageIndexChanging="grdResult_PageIndexChanging"
                    GridLines="None" 
                    Width="100%" 
                    AllowSorting="True" 
                    AllowPaging="True" 

然后在底部定义一个数据源

<asp:SqlDataSource ID="sqlGridData" runat="server"></asp:SqlDataSource>

现在在后面的代码中用数据加载你的 sqlGridData 控件(它接受许多参数,如数据表、odbcrecordset,你可以使用这里提到的 .provider 属性http://tinyurl.com/bllyjsz)如果你有静态数据,你甚至在设计时提到它们(如在这里完成http://tinyurl.com/c8b6mbh)

private void BindDataGrid()
    {
        sqlGridData.Provider = dataReader;
        grdResult.DataSourceID = "xmlGridData";
        //grdResult.PageIndex = 0;
    }

试试这个,如果您有任何疑问,请告诉我。

【讨论】:

  • 问题出在 ListView1.DataKeys[dataItem.DataItemIndex]["ProductId"].ToString(); //所选游戏的产品ID。字符串 GameName = ListView1.DataKeys[dataItem.DataItemIndex]["GameName"].ToString(); //gamename 我无法获取数据键值 :(
  • @TwinklingStar :请在此处发布您的代码,我会尝试查看它(您可以编辑您的原始帖子以添加代码)并尝试解析而不是强制转换(只是为了避免空验证),例如:string GameName = (string)ListView1.DataKeys[dataItem.DataItemIndex]["GameName"];或尝试 convert.tostring()。
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多