Jag har en datagrid med en edittemplate. Nu skulle jag vilja fylla en dropdownlist i edittemplaten med värden från en databas men jag lyckas inte få det att fungera. Nu har jag löst det första problemet med att fylla dropdownen. Jag använde en funktion istället. nu har jag löst det. Jag hade lagt lbllaga och lbllagb i edittemplaten istället för i itemtemplaten.Problem med att fylla dropdown
Någon som vet hur jag kan lösa det?
<code>
Public Sub datagrid1_edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
datagrid1.EditItemIndex = e.Item.ItemIndex
filldata()
datagrid1.DataBind()
End Sub
Public dpllag_a As DropDownList = New DropDownList()
Public dpllag_b As DropDownList = New DropDownList()
Public Sub filldata()
Dim objcmd1 As New OleDbDataAdapter _
("select Namn, Id from Deltagande_lag where Cup_id=35 order by id", objconn)
Dim ds1 As DataSet = New DataSet()
objcmd1.Fill(ds1, "deltagande_lag")
dpllag_a.DataSource = ds1.Tables("deltagande_lag")
dpllag_a.DataBind()
dpllag_b.DataSource = ds1.Tables("deltagande_lag")
dpllag_b.DataBind()
End Sub
</code>
Och så här skriver jag dropdownen på aspx sidan
<code>
<asp:dropdownlist id="dpllag_a" width="120" runat="server" visible="true" DataTextField="Namn" DataValueField="id" />
</code>Sv: Problem med att fylla dropdown
Mitt andra problem. Jag har problem med att få rätt värde i dropdwnen selected. Jag hittade det här exemplet och försökte följa det. http://aspalliance.com/das/dgcombo.aspx .
Koden på aspx sidan
Detta ligger i en edittemplate i en datagrid
<code>
<asp:label id="Lbllaga" runat="server" visible="False" text='<%# DataBinder.Eval(Container, "DataItem.lagid_a") %>' />
<asp:label id="Lbllagb" runat="server" visible="False" text='<%# DataBinder.Eval(Container, "DataItem.lagid_b") %>' />
<asp:dropdownlist id="dpllaga" width="120" runat="server" DataSource="<%# filldg() %>" DataTextField="Namn" DataValueField="id" />
<asp:dropdownlist id="dpllagb" width="120" runat="server" DataSource="<%# filldg() %>" datatextfield="namn" datavaluefield="id" />
</code>
Sen i codebehind filen har jag det här
<code>
Public strlaga As String
Public strlagb As String
Public Sub datagrid1_edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
datagrid1.EditItemIndex = e.Item.ItemIndex
strlaga = CType(e.Item.FindControl("Lbllaga"), Label).Text
strlagb = CType(e.Item.FindControl("Lbllagb"), Label).Text
datagrid1.DataBind()
End Sub
Public Sub DG_ItemDataBound(ByVal s As Object, ByVal e As DataGridItemEventArgs)
If e.Item.ItemType = ListItemType.EditItem Then
Dim myDropDown As DropDownList
myDropDown = CType(e.Item.FindControl("dpllaga"), DropDownList)
myDropDown.SelectedIndex = myDropDown.Items.IndexOf(myDropDown.Items.FindByvalue(strlaga))
End If
If e.Item.ItemType = ListItemType.EditItem Then
Dim myDropDown As DropDownList
myDropDown = CType(e.Item.FindControl("dpllagb"), DropDownList)
myDropDown.SelectedIndex = myDropDown.Items.IndexOf(myDropDown.Items.FindByvalue(strlagb))
End If
End Sub
'funktionen för att fylla dropdownen
Public Function filldg()
Dim objcmd1 As New OleDbDataAdapter _
("select Namn, Id from Deltagande_lag where Cup_id=" & viewstate("c_id") & "", objconn)
Dim ds1 As DataSet = New DataSet()
objcmd1.Fill(ds1, "deltagandelag")
Return ds1.Tables("deltagandelag")
End Function
</code>
När jag försöker köra sidan får jag det här felmeddelandet
<code>
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 47: Public Sub datagrid1_edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
Line 48: datagrid1.EditItemIndex = e.Item.ItemIndex
Line 49: strlaga = CType(e.Item.FindControl("Lbllaga"), Label).Text
Line 50: strlagb = CType(e.Item.FindControl("Lbllagb"), Label).Text
Line 51: datagrid1.DataBind()
Source File: h:\inetpub\wwwroot\cup\spelschema.aspx.vb Line: 49
</code>
Någon som vet hur jag ska göra för att få rätt värde selected?Sv: Problem med att fylla dropdown