Hej! Hej Tyronne Enklaste ädringen för dig ligger i din switch sats...Endast varannan rad tas ut i repeatern
Jag vill ha en repeater med en gridview i och det har jag lyckats med. Mitt problem är att bara i varannan rad visas gridviewn.
så här ser HTML koden ut:
<code>
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound" >
<HeaderTemplate>
<table width="411" border="0" cellpadding="0" cellspacing="0">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td height="18" colspan="3" valign="middle"><b><span class="style1"> # <%# DataBinder.Eval(Container.DataItem,"xnumber") %> <%# DataBinder.Eval(Container.DataItem,"fname") %> <%# DataBinder.Eval(Container.DataItem,"lname") %></span></b></td>
</tr>
<tr>
<td width="132" rowspan="7" valign="middle"><!--DWLayoutEmptyCell--> </td>
<td width="96" height="19" valign="middle"><b>Position:</b></td>
<td width="183" valign="middle"> <%# DataBinder.Eval(Container.DataItem,"pos") %></td>
</tr>
<tr>
<td height="19" valign="middle"><b>Vikt:</b></td>
<td valign="middle"><!--DWLayoutEmptyCell--> <%# DataBinder.Eval(Container.DataItem,"weight") %></td>
</tr>
<tr>
<td height="19" valign="middle"><b>Längd</b></td>
<td valign="middle"><!--DWLayoutEmptyCell--> <%# DataBinder.Eval(Container.DataItem,"lenght") %></td>
</tr>
<tr>
<td height="19" valign="middle"><b>Född</b></td>
<td valign="middle"><!--DWLayoutEmptyCell--> <%# DataBinder.Eval(Container.DataItem,"byear") %></td>
</tr>
<tr>
<td height="19" valign="middle"><b>Antal säsonger:</b></td>
<td valign="middle"><!--DWLayoutEmptyCell--> <%# DataBinder.Eval(Container.DataItem,"nrofseasons") %></td>
</tr>
<tr>
<td height="19" valign="middle"><b>Moderklubb:</b></td>
<td valign="middle"><!--DWLayoutEmptyCell--> <%# DataBinder.Eval(Container.DataItem,"moderclubb") %></td>
</tr>
<tr>
<td height="19" valign="middle"><asp:Label ID="Label2" Visible=false Font-Size="12px" Text='<%# DataBinder.Eval(Container.DataItem,"id")%>' runat =server /></td>
<td valign="middle"><!--DWLayoutEmptyCell--> </td>
</tr>
<tr>
<td height="27" colspan="3" valign="top">
<asp:GridView ID="GridView2" runat="server" AllowPaging="True" AutoGenerateColumns="False"
CellPadding="4" CellSpacing="1" CssClass="Grid" DataKeyNames="ID"
Font-Names="Verdana" Font-Size="8pt" ForeColor="#333333" GridLines="None" Height="1px"
PageSize="5" SelectedRowStyle-CssClass="selectedRow"
Width="250px" AllowSorting="True" >
<FooterStyle BackColor="#5D7B9D" CssClass="Grid" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="seasong" HeaderText="Säsong">
<ItemStyle HorizontalAlign="Left" Width="80px" />
<HeaderStyle HorizontalAlign="Left" />
<ControlStyle Font-Size="10pt" Width="80px" />
</asp:BoundField>
<asp:BoundField DataField="score" HeaderText="Mål">
<ItemStyle Width="60px" HorizontalAlign="Right" />
<HeaderStyle HorizontalAlign="Right" />
<ControlStyle Font-Size="10pt" Width="40px" />
</asp:BoundField>
<asp:BoundField DataField="Assist" HeaderText="Pass">
<ItemStyle Width="60px" HorizontalAlign="Right" />
<HeaderStyle HorizontalAlign="Right" />
<ControlStyle Font-Size="10pt" Width="40px" />
</asp:BoundField>
<asp:BoundField DataField="summa" HeaderText="Totalt">
<ItemStyle Width="60px" HorizontalAlign="Right" />
<HeaderStyle HorizontalAlign="Right" />
<ControlStyle Font-Size="10pt" Width="40px" />
</asp:BoundField>
<asp:BoundField DataField="penelty" HeaderText="Utv">
<ItemStyle Width="60px" HorizontalAlign="Right" />
<HeaderStyle HorizontalAlign="Right" />
<ControlStyle Font-Size="10pt" Width="40px" />
</asp:BoundField>
</Columns>
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#C0C0FF" HorizontalAlign="Left" VerticalAlign="Middle" Wrap="True" />
<SelectedRowStyle BackColor="#E2DED6" CssClass="selectedRow" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="White" ForeColor="Black" Height="12px" HorizontalAlign="Right" />
<HeaderStyle Font-Bold="True" ForeColor="Black" HorizontalAlign="Left" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
</asp:GridView><br />
<hr size="1" noshade="noshade" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</code>
min codebehinde:
<code>
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
int playerID=0;
switch(e.Item.ItemType)
{
case ListItemType.Item :
//-- Get data from datareader, for this row in databas
DataRowView dr = (DataRowView)e.Item.DataItem;
playerID = (int)dr.Row["id"];
break;
}
if(playerID !=0)
{
WebLogic.CPlayer player = new WebLogic.CPlayer();
DataSet ds = player.SelectPlayersDataToGridview(playerID);
GridView gvPlayerData = ((GridView)e.Item.FindControl("GridView2"));
if (ds.Tables[0].Rows.Count == 0)
{
gvPlayerData.Visible = true;
}
else
{
gvPlayerData.DataSource = ds;
gvPlayerData.DataBind();
}
}
</code>
Det som häder är att playerID är 0 varannan gång och det innebär att att gridviewn endast fylls varannan gång.
Hur kommer jag runt detta?
/TyronneSv: Endast varannan rad tas ut i repeatern
Troligtvis måste du läsa av AlternateItem för att fånga upp alla rader.
Din rad...
DataRowView dr = (DataRowView)e.Item.DataItem;
...behöver alltså kompletteras med något i stil med: dr = (DataRowView)e.AlternateItem.DataItem
Är inte 100 på syntaxen för c# men detta borde lösa problemet.
/JoachimSv: Endast varannan rad tas ut i repeatern
switch(e.Item.ItemType)
{
case ListItemType.Item :
//-- Get data from datareader, for this row in databas
DataRowView dr = (DataRowView)e.Item.DataItem;
playerID = (int)dr.Row["id"];
break;
}
ändra till
switch(e.Item.ItemType)
{
case ListItemType.AlternatingItem :
case ListItemType.Item :
//-- Get data from datareader, for this row in databas
DataRowView dr = (DataRowView)e.Item.DataItem;
playerID = (int)dr.Row["id"];
break;
}
Borde se ut ungefär så... Är inte helt 100 på enumerations alternativet "ListItemType.AlternatingItem", men det bör heta ungefär så...