ja wypełniania kontrolki DropDownList następująco -ASP.NET DropDownList Problem: SelectedItem nie zmienia
public partial class UserControls_PMS_Send2DeliveryTeam : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
// SA 100928 Get the delivery teams and their respective email addresses
string[] delTeam = ConfigurationManager
.AppSettings["deliveryTeamNames"]
.Split(',');
string[] delTeamEmails = ConfigurationManager
.AppSettings["deliveryTeamEmails"]
.Split('|');
if (delTeam.Length != delTeamEmails.Length)
{
showAlert("You have an error in the configuration of the delivery teams");
return;
}
for(int looper=0; looper<delTeam.Length; looper++)
delTeamDDList
.Items
.Add
(
new ListItem(delTeam[looper], delTeamEmails[looper])
);
}
// Other methods
}
Ale gdy użytkownik wybierze wartość z tej listy rozwijanej, tylko pierwszy element jest zaznaczony. Aby wyjaśnić więcej, załóżmy, że lista zawiera 4 pozycje: item 1
, item 2
, item 3
i item 4
. Gdy użytkownik wybierze czwartą pozycję z listy, wybierze item 1
jako wybraną wartość.
Jaki jest tego powód?
EDIT
Właśnie sprawdziłem wygenerowany kod HTML na DropDownList przy użyciu Firebug, a wydaje się, że „wybrany” wartość nie w ogóle, nawet jeśli mam wybrać różne wartości z DropDownList zmienić.
Wygenerowany HTML jest następujący -
<select class="select" id="Send2DeliveryTeam_delTeamDDList" name="Send2DeliveryTeam$delTeamDDList">
<option value="value1" selected="selected">Project Initiation Team</option>
<option value="value2">Service Delivery Centre</option>
<option value="value3">TCS</option>
<option value="value4">PIT & SDC</option>
<option value="value5">SDC & TCS</option>
<option value="value6">PIT & TCS</option>
<option value="value7">PIT & SDC & TCS</option>
</select>
Po pierwsze, użytkownik wybiera wartość z listy rozwijanej. Następnie naciska przycisk, który uruchamia kliknięcie. Odpowiednią funkcją obsługi zdarzeń przycisku jest miejsce, w którym uzyskuję dostęp do wybranej wartości listy rozwijanej. Kod jest następujący -
// Button event-handler code
protected void assignDelTeamButton_Click(object sender, EventArgs e)
{
// This is where I am always getting the same value, no matther what I choose
// from the dropdown list, and this value is the one which is selected by default
// when the page loads. I mean, the "SelectedIndex" is always 0.
string selected_value = delTeamDDList.SelectedItem.ToString();
// Other codes
}
Plik ascx -
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Send2DeliveryTeam.ascx.cs" Inherits="UserControls_PMS_Send2DeliveryTeam" %>
<div id="Common">
<h3>Welcome <%string user = HttpContext.Current.Session["user_name"].ToString();%><%=user %></h3>
<h1>Request Estimate Screen</h1>
<span>Request Estimate and Assign a Delivery team to a Request</span><br />
<label>Enter an existing project number</label>
<asp:TextBox ID="reqNum" runat="server" CssClass="textBox" /><br />
<label>Select Delivery Team</label>
<asp:DropDownList ID="delTeamDDList" runat="server" CssClass="select" >
</asp:DropDownList>
<label> - Sorted in alpha order</label><br /><br />
<label> </label>
<asp:button ID="assignDelTeamButton" runat="server" Text="Continue"
CssClass="button" onclick="assignDelTeamButton_Click"/><br />
</div>
Druga Edycja
Gdybym ciężko Kodeksu ListItems następująco, to działa doskonale -
<asp:DropDownList ID="delTeamDDList" runat="server" CssClass="select" >
<asp:ListItem Text="Project Initiation Team" Value="[email protected]"></asp:ListItem>
<asp:ListItem Text="Service Delivery Centre" Value="[email protected]"></asp:ListItem>
<asp:ListItem Text="TCS" Value="[email protected]"></asp:ListItem>
<asp:ListItem Text="PIT & SDC" Value="[email protected]"></asp:ListItem>
<asp:ListItem Text="SDC & TCS" Value="[email protected]"></asp:ListItem>
<asp:ListItem Text="PIT & TCS" Value="[email protected]"></asp:ListItem>
<asp:ListItem Text="PIT & SDC & TCS" Value="[email protected]"></asp:ListItem>
</asp:DropDownList>
jak wygląda renderowany HTML? jaka jest para klucz/wartość, która jest renderowana? biorąc to pod uwagę - należy zachować ostrożność podczas tworzenia pętli w oparciu o jedną kolekcję i dodawać klucz/wartość w oparciu o tę kolekcję i inną. – RPM1984
@RPM: Zobacz edycję. –
@Night Shade - czy możesz podać surowy HTML? Chcę zobaczyć, jak wygląda prawdziwy HTML, zanim przejdziesz do "wybranego elementu". sprawdźmy, czy jest to prawidłowy html. im bankowość na nie. – RPM1984