2013-04-08 63 views
0

我有一個列表視圖在我放置datapager如下。 我正在使用SQl數據源並將記錄綁定到ListView。在列表視圖中的數據尋呼機問題

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

和DataPager的在LayoutTemplate模板

而在項目模板,我放置一個按鈕,點擊時,它調用其中我試圖獲取DatakeyName值的方法。當pager被給出時,它在第一頁中工作正常,但是當移動到尋呼機中的其他頁面時,它引發了一個異常。 下面是按鈕點擊代碼,

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

什麼是例外? – Melanie 2013-04-08 18:44:27

+0

使用DataPager的任何特定原因?您可以使用gridview/listview中的inbuild分頁和排序功能,以及使用sqldatasource(作爲網格的數據提供程序),無需手動執行分頁,它會自動處理頁面索引頁面。 – Vishal 2013-04-08 18:46:32

+0

我得到的異常是ArgumentOutOfRange和我正在使用datapager,因爲查詢返回多個記錄,我會檢查內置的分頁,並返回給你 – 2013-04-08 18:49:02

回答

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控制(它接受許多參數,如數據表,odbcrecordset可以使用.provider財產這裏提到http://tinyurl.com/bllyjsz)如果你有靜態數據他們,你甚至提在設計時(如這裏http://tinyurl.com/c8b6mbh完成)

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

試試這個,你讓我知道如果您有任何疑問。

+0

問題與ListView1.DataKeys [dataItem.DataItemIndex] [「ProductId」]。ToString(); //所選遊戲的產品ID。 string GameName = ListView1.DataKeys [dataItem.DataItemIndex] [「GameName」]。ToString(); //遊戲名稱 我無法獲取datakey值:( – 2013-04-08 19:54:15

+0

@TwinklingStar:請在此處發佈您的代碼,我會嘗試查看它(您可以編輯您的原始帖子以添加代碼)並嘗試解析而不是鑄造(只是爲了避免null驗證)像:string GameName =(string)ListView1.DataKeys [dataItem.DataItemIndex] [「GameName」];或者嘗試convert.tostring()。 – Vishal 2013-04-09 03:43:48

相關問題