我有一个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
...............................
.............................
}
答案 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;
}
试试这个,如果您有任何疑问,请告诉我。