C# listview中的数据寻呼机问题

C# listview中的数据寻呼机问题,c#,asp.net,C#,Asp.net,我有一个列表视图,在其中我放置了datapager,如下所示。 我正在使用SQl数据源并将记录绑定到ListView asp:ListView runat="server" ID="ListView1" DataKeyNames="ProductId,GameName" DataSourceID="GameTable" OnItemCommand="On_Select_Item" 和LayoutTemplate中的datapager 在项目模板中,我放置了一个按钮,当单击它时,它调用了一个方

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

asp:ListView runat="server" ID="ListView1" DataKeyNames="ProductId,GameName" DataSourceID="GameTable" OnItemCommand="On_Select_Item" 
和LayoutTemplate中的datapager

在项目模板中,我放置了一个按钮,当单击它时,它调用了一个方法,我试图在其中获取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.
-------------在第行下面抛出异常---------

}

首先定义网格(您可以将控件名称更改为listView,但实现方式相同)


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

有什么例外?使用DataPager有什么特殊原因吗?您可以使用gridview/listview附带的内置分页和排序功能,通过使用sqldatasource(作为网格的数据提供者),您无需手动进行分页,它会自动处理分页,页面索引。我得到的异常是ArgumentOutOfRange,我使用datapager,因为查询返回多条记录,我将检查内置分页并返回到you@TwinklingStar当然,如果你需要密码,一定要告诉我。我已经使用了很多次这个功能,它的效果很好。@VishalSachdeva,你能发布一下吗问题在于ListView1.DataKeys[dataItem.DataItemIndex][“ProductId”].ToString()//所选游戏的产品Id。字符串GameName=ListView1.DataKeys[dataItem.DataItemIndex][“GameName”].ToString()//gamename我无法获取datakey值:(@TwinklingStar:请在此处发布您的代码,我将尝试查看它(您可以编辑原始帖子以添加代码),然后尝试解析而不是强制转换(只是为了避免空验证),如:string gamename=(string)ListView1.DataKeys[dataItem.DataItemIndex][“gamename”];或尝试转换.tostring()。
          string ProductId =
            ListView1.DataKeys[dataItem.DataItemIndex]["ProductId"].ToString(); //Product Id for the selected game.
            string GameName = ListView1.DataKeys[dataItem.DataItemIndex]["GameName"].ToString(); //gamename

...............................
.............................
 <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>
private void BindDataGrid()
    {
        sqlGridData.Provider = dataReader;
        grdResult.DataSourceID = "xmlGridData";
        //grdResult.PageIndex = 0;
    }