listview问题中的数据寻呼机

时间:2013-04-08 18:39:27

标签: c# asp.net

我有一个listview,在这里我放置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.

-------------在---------

行下面抛出异常
          string ProductId =
            ListView1.DataKeys[dataItem.DataItemIndex]["ProductId"].ToString(); //Product Id for the selected game.
            string GameName = ListView1.DataKeys[dataItem.DataItemIndex]["GameName"].ToString(); //gamename

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

}

1 个答案:

答案 0 :(得分:0)

首先定义网格(您可以将控件名称更改为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控件和数据(它接受许多参数,如datatable,odbcrecordset你可以使用这里提到的.provider属性http://tinyurl.com/bllyjsz)如果你有静态数据,你甚至在设计时提到它们(在此处http://tinyurl.com/c8b6mbh

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

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