Jag sitter och knåpar med ett formulär (En Formview), där användaren nånstans mitt i skall välja klubb Hej, ja det var lagom luddigt ;)Updatepanel i Formview + masterpage
dessa finns i en dropdownlist. Finns inte klubben så skall man kunna lägga till den genom att skriva in namnet i en textBox och klicka på knappen "Add"
Allt detta ligger i en UpdatePanel, för att slippa omaket med att allt som användaren fyllt i innan försvinner
Jag har kommit så långt att jag kan lägga till en ny klubb, och dessutom förhindra att 2 klubbnamn förekommer 2 ggr.
Det jag bråkar med nu är ett önskemål från Kunden nämligen
- Lägger jag in "testklubb" så skall denna sedan vara förvald i listan
- Finns redan "testklubb" i listan så skall den även då bli förvald
det är här jag kört fast totalt
Detta funkar på en sida utan masterpage, men så fort jag använder masterpage så sätts inget selected valueSv: Updatepanel i Formview + masterpage
Det beror lite på hur du skrivit koden för hitta din lista. MasterPage ändrar om hierarkin lite rörande controller. Dvs Control hierarkin, så IDn m.m blir annorlunda. Kör man ex FindControl kan det bli så att den inte hittar din kontroll, eller oxå så att en postback inte hittar controllen då IDt inte riktigt stämmer längre från innan. Men som sagt allt beror på hur du Kodat för att sätta din kontrols selected value och vart i koden du gör detta. Eventordningen spelar oxå stor roll. Vissa event slutar även att fungera när man använder Masterpage detta pga hur Masterpage är uppbyggt.
Kanske luddigt svar :-)
Mvh JohanSv:Updatepanel i Formview + masterpage
findControl: ja det verkar ju funka eftersom jag både lyckas hitta textboxen och binda data till dropdownlistan
det verkar snarare som att selected=true ignoreras
Så här ser koden ut för att spara /inte spara ny klubb
Protected Sub btnAddClub_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ddl As DropDownList = CType(fvPlayer.FindControl("ddlClubs"), DropDownList)
Dim txtCn As TextBox = CType(fvPlayer.FindControl("txtNewClub"), TextBox)
If ddl.Items.FindByText(txtCn.Text.Trim) Is Nothing Then
Dim NewID As Integer = cBLL.AddClub(txtCn.Text.Trim)
ddl.DataBind()
ddl.SelectedValue = NewID
Else
ddl.DataBind()
ddl.Items.FindByText(txtCn.Text.Trim).Selected = True
End If
txtNewClub.Text = ""
End Sub
och i aspx-sidan
<asp:FormView ID="fvPlayer" DefaultMode="Insert" DataKeyNames="PlayerID" runat="server" DataSourceID="odsPlayer">
<ItemTemplate></ItemTemplate>
<InsertItemTemplate>
[snipp..]
<asp:ObjectDataSource ID="odsClubs" runat="server" SelectMethod="GetClubs" TypeName="ClubsBLL" InsertMethod="AddClub"></asp:ObjectDataSource>
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddlClubs" runat="server" DataTextField="ClubName" DataValueField="clubID" DataSourceID="odsClubs" Width="150px"></asp:DropDownList>
Add club
<div id="AddClub" style="display:none;">
<label class="formLayout">Club:</label>
<asp:TextBox ID="txtNewClub" runat="server" />
<asp:RequiredFieldValidator ID="rfvClubName" ControlToValidate="txtNewClub" Text="*" ValidationGroup="Club" runat="server" />
<asp:Button ID="btnAddClub" runat="server" Text="Add" ValidationGroup="Club" OnClick="btnAddClub_Click" />
</div>
</ContentTemplate>
</asp:UpdatePanel>
</InsertItemTemplate>
</asp:FormView>