Ich habe zwei Dropdownlists eine für den Typ eines Soldaten und eines für die Zahl der Soldaten der Spieler i kaufen dürfen. Ich bevölkern ddlSoldiers mit einem LinqDataSource in der Aspx-Seite wie folgt aus:Artikel von Dropdownlist entfernen
<asp:DropDownList ID="ddlSoldiers" runat="server"
DataSourceID="LinqDataSource2" DataTextField="type"
DataValueField="troopid" AutoPostBack="True">
</asp:DropDownList>
<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="BrowserSpill.LinqClass1DataContext" EntityTypeName=""
Select="new (type, troopid)" TableName="Troops">
</asp:LinqDataSource>
Die andere Liste ddlSoldierNumber in der Pageload wie folgt aufgefüllt wird:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["userRole"] == null || Session["userRole"].Equals("admin"))
{
Response.Redirect("Login.aspx");
}
int userid = Convert.ToInt32(Session["userid"]);
if(string.IsNullOrEmpty(ddlSoldiers.SelectedValue))
{
var varTroopType = dc.Troops.Single(t => t.troopid == 1).type;
string troopType = Convert.ToString(varTroopType);
var varBuildingId = dc.Buildings.Single(b => b.soldierType == troopType).buildingid;
int buildingId = Convert.ToInt32(varBuildingId);
var varNumberOfBuildings =
dc.Towns.Single(t => (t.buildingid == buildingId) && (t.userid == userid)).number;
int numberOfBuildings = Convert.ToInt32(varNumberOfBuildings);
for (int i = 1; i < numberOfBuildings + 1; i++)
{
ddlSoldierNumber.Items.Add(i.ToString());
}
}
else
{
ddlSoldierNumber.Items.Clear();
string troopType = ddlSoldiers.SelectedItem.Text;
var varBuildingId = dc.Buildings.Single(b => b.soldierType == troopType).buildingid;
int buildingId = Convert.ToInt32(varBuildingId);
var varNumberOfBuildings =
dc.Towns.Single(t => (t.buildingid == buildingId) && (t.userid == userid)).number;
int numberOfBuildings = Convert.ToInt32(varNumberOfBuildings);
for(int i = 1; i < numberOfBuildings+1; i++)
{
ddlSoldierNumber.Items.Add(i.ToString());
}
}
}
Aber wenn ich will, um die Werte von ddlSoldierNumber i erhalten Erhalte nur den ersten Wert in dieser Liste. Ich versuche, die Nummer mit dem Klick auf eine Schaltfläche wie folgt zu erhalten:
protected void btnBuySoldier_Click(object sender, EventArgs e)
{
string numbertobuy = ddlSoldierNumber.SelectedItem.Value;
lblAntall.Text = numbertobuy;
}
Ich habe versucht, die Linie zu setzen:
ddlSoldierNumber.Items.Clear();
andere Orte, aber ohne Erfolg. Wer weiß, wie ich die Nummernliste löschen kann, nachdem ich die Taste gedrückt, bevor die ddlSoldierNumber neu besiedelt werden?
'ddlSoldierNumber.Items.Clear();' sollten Sie die Liste löschen, haben Sie die PostBack-Eigenschaft der Schaltfläche auf True festgelegt? – user959631