Hej Hej.. Hej Det jag lyckades med va följande: Lyckades.. jag missade att kontrollera om jag faktiskt fått tag i kontrollen. Var inte tillgänglig förrän nu. Datagrid + dropdownlist
Hur gör jag följande?
Exempel:
Jag fyller en datagrid från en tabell. I tabellen finns två columner - Projektnamn och Status.
Status kan innehålla antingen Pågår eller Klar så denna vill jag ha i en dropdownlist.
Projekt (text) Status (dropdown)
Tvätta Bilen Klar
Laga taket Pågår
Jag vill alltså fylla dropdownlistan för varje rad med status klar samt pågår. Sedan
vill jag att rätt status för varje projekt skall vara markerat i dropdownlistan.
Jag vet att man kan använda sig av <listitem> för att koda boxen. Men tanken är
att man kanske skaffar flera status rader i databasen vid senare tillfälle. Har testat med DataBinder.Eval men får det inte riktigt att fungera.
Nån som kan hjälpa mig??
Tackar...
/MarcusSv: Datagrid + dropdownlist
Du kan använda dig av OnItemCreated eventet som du har i din DataGrid.
I detta Event hanterar du din Control. (DropDownList controllen)
//Johan NSv: Datagrid + dropdownlist
Jag har lyckats på ett annat sätt (se längre ner) Däremot lyckas jag inte med det du föreslår.
Jag prövade detta:
Ditt förslag (tänker jag rätt?)
-----------------------------------------
I min grid har jag skapat en dropdownobjekt
<code>
<asp:TemplateColumn HeaderText="Kön">
<ItemTemplate>
<asp:DropDownList Runat="server" id="drpList"></asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</code>
I code behind:
Under grdDemo_ItemCreated händelsen försöker jag med:
<code>
Dim oList as DropDownList
oList = e.Item.Cells(0).FindControl("drpList")
</code>
När jag försöker göra någonting med oList så säger den att det inte
finns någon referens till det objektet.
Vad gör jag för fel?Sv: Datagrid + dropdownlist
<code>
<asp:DataGrid id="grdDemo">
<Columns>
<asp:BoundColumn DataField="colNamn" HeaderText="Namn"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Kön">
<ItemTemplate>
<asp:DropDownList SelectedIndex='<%# GetSelectedIndex() %>' ID="lstKön" Runat="server" DataTextField="colKön" DataValueField="colID" DataSource='<%# GetCategories() %>' >
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</code>
I code behind skapade jag två styck Publica funktioner, en för datasourcen GetCategories
<code>
Public Function GetCategories() As DataTable
Dim tbl As New DataTable("tblKön")
Dim row As DataRow
tbl.Columns.Add("colID")
tbl.Columns.Add("colKön")
row = tbl.NewRow
row.Item("colID") = 1
row.Item("colKön") = "Man"
tbl.Rows.Add(row)
row = tbl.NewRow
row.Item("colID") = 2
row.Item("colKön") = "Kvinna"
tbl.Rows.Add(row)
Return tbl
End Function
</code>
och en Public funcktion GetSelectedIndex
<code>
Public Function GetSelectedIndex() As Integer
Return 0
End Function
</code>
Detta funkade....
Kan du utvekla ditt exempel lite, tycker att det verkar intressant. Om inte annat vill jag kunna komma åt de olika kontroller jag har i datagriden.
Tack för hjälpen
//MarcusSv: Datagrid + dropdownlist
Koden blev:
<code>
Private Sub grdDemo_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles grdDemo.ItemDataBound
Dim List As DropDownList
List = e.Item.Cells(1).FindControl("lstKön")
If List Is Nothing = False Then
'Här kan jag börja jobba med dropdownlistan.....
Dim lst As New ListItem()
lst.Text = "Blandras"
lst.Value = 3
List.Font.Bold = Not List.Font.Bold = True
List.Items.Add(lst)
End If
End Sub
</code>
Tack för all hjälp...
/MarcusSv: Datagrid + dropdownlist
Kul att du klarade det på egen hand.
//Johan N