webForumDet fria alternativet

onitemdatabound

2 svar · 205 visningar · startad av andreas_lindh

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#1

jag har en datagrid med en itemtemplate

<asp:datagrid id="dgATeam" runat="server" gridlines="None" showfooter="False" showheader="False" borderwidth="0" datakeyfield="id" onitemdatabound="DgADatabind" autogeneratecolumns="False">
  <columns>
    <asp:templatecolumn>
      <itemtemplate>
        <asp:table id="tblAPlayer" runat="server" width="100%">
          <asp:tablerow>
            <asp:tablecell width="40px">
              <asp:textbox width="35px" runat="server" id="tbANumber" text='<%# DataBinder.Eval(Container, "DataItem.nummer") %>' /><%# DataBinder.Eval(Container, "DataItem.femma") %> <%# DataBinder.Eval(Container, "DataItem.spelarID") %>
            </asp:tablecell>
            <asp:tablecell width="160px">
              <asp:dropdownlist id="ddlAPlayer" runat="server" datasource='<%# BindPlayers() %>' datatextfield="spelarID" datavaluefield="spelarID" /><asp:textbox id="lblAPlayer" runat="server" style="visibility:hidden;width:10px;" text='<%# DataBinder.Eval(Container, "DataItem.SpelarID") %>' />
            </asp:tablecell>
            <asp:tablecell width="20px">
              <asp:checkbox id="ckxAC" runat="server" checked='<%# checked(DataBinder.Eval(Container, "DataItem.c")) %>' visible='<%# vis(DataBinder.Eval(Container, "DataItem.position")) %>' />
            </asp:tablecell>
            <asp:tablecell width="20px">
              <asp:checkbox id="ckxAA" runat="server" checked='<%# checked(DataBinder.Eval(Container, "DataItem.a")) %>'  visible='<%# vis(DataBinder.Eval(Container, "DataItem.position")) %>' />
            </asp:tablecell>
          </asp:tablerow>
        </asp:table>
      </itemtemplate>
    </asp:templatecolumn>
  </columns>
</asp:datagrid>

Till den har jag en sub som körs vid onitemdatabound.

Dim strPlayer As String
    Public Sub DgADatabind(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
        If e.Item.ItemType = ListItemType.Item Then
            strPlayer = CType(e.Item.FindControl("lblAPlayer"), TextBox).Text
            Dim myDropdown As DropDownList
            myDropdown = CType(e.Item.FindControl("ddlAPlayer"), DropDownList)
            myDropdown.DataBind()
            myDropdown.Items.Add(New ListItem(" - ", "0"))
            myDropdown.SelectedIndex = myDropdown.Items.IndexOf(myDropdown.Items.FindByValue(strPlayer))
        End If
    End Sub

Problmet är att den bara körs på varannan post.
Någon som vet hur jag ska göra så att den körs på varje post?

Engine^Medlem sedan dec. 20003 887 inlägg
#2

Det kanske är så att det alltid kommer en ListItemType.AlternatingItem för DataGridItemEventArgs, men det låter skumt om du nu inte har angivit någon sådan, men det kanske är lösningen...

If e.Item.ItemType = ListItemType.Item [b]Or e.Item.ItemType = ListItemType.AlertnatingItem[/b] Then

Det är ju bara att testa ;)

andreas_lindhMedlem sedan jan. 20011 140 inlägg
#3

Tack :) .
Det fungerar med e.Item.ItemType = ListItemType.AlternatingItem

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)