簡體   English   中英

更改下拉菜單時更新標簽?

[英]Update a label when I change a dropdown selection?

基本上,我希望我的標簽priceLabel在用戶更改下拉列表大小時自動更新。

例如,他們從sizeDropdown中選擇一個大小,然后更改一個十進制數,然后將該十進制轉換為字符串並將其放入priceLabel。 如果用戶更改了sizeDropdown的選擇,它將自動重新更新priceLabel。

這是我目前擁有的東西,但它不起作用:

在HTML中

<asp:DropDownList ID="sizeDropdown" runat="server" OnSelectedIndexChanged="sizeDropdown_SelectedIndexChanged"></asp:DropDownList>

然后在aspx.cs中

通過一種方法添加值:

sizeDropdown.Items.Add("50g");
sizeDropdown.Items.Add("100g");

在另一個我嘗試分配價格:

protected void sizeDropdown_SelectedIndexChanged(object sender, EventArgs e)
{
    double amount = 0;
    if (sizeDropdown.SelectedItem.Equals("50g"))
    {
        amount = 4.99;
    }
    else if (sizeDropdown.SelectedItem.Equals("100g"))
    {
        amount = 7.99;
    }

    priceLabel.Text = amount.ToString();
}

謝謝

編輯:謝謝大家的幫助! 我將保留此ehre,如果有人對我感興趣,那么我將其固定只是將選擇的值轉換為字符串,然后使用該字符串節省了很多時間。 干杯!

在sizeDropdown標簽中使用此標簽

   AutoPostBack="True"

在所有條件下的SelectedItem.Text

    if (sizeDropdown.SelectedItem.Text.Equals("50g"))
    {
       amount = 4.99;
    }

如果在page_load事件中添加項目,則不需要

 if(!Page.IsPostBack)
 {
  sizeDropdown.Items.Add("50g");
  sizeDropdown.Items.Add("100g");
 }

你需要做兩件事

  • 在標簽中添加AutoPostBack="True"來執行回發,默認情況下為false。
  • 將代碼綁定到!Page.IsPostBack ,這樣您的下拉列表就不會再次綁定並失去所選的選項。

HTML

<asp:DropDownList  ID="sizeDropdown" runat="server" AutoPostBack="True"  OnSelectedIndexChanged="sizeDropdown_SelectedIndexChanged"></asp:DropDownList>

代碼隱藏

if( !Page.IsPostBack)
{
   sizeDropdown.Items.Add("50g");
   sizeDropdown.Items.Add("100g");
}

嘿,嘗試這個,我有同樣的問題可以解決。...在設計中,為下拉列表添加AutoPostBack =“ True”。

<asp:DropDownList  ID="sizeDropdown" AutoPostBack="True" runat="server" OnSelectedIndexChanged="sizeDropdown_SelectedIndexChanged">

在后面的代碼中.....

protected void sizeDropdown_SelectedIndexChanged(object sender, EventArgs e)
{

   double amount = 0;
   if (sizeDropdown.SelectedItem.Equals("50g"))
   {
      amount = 4.99;
   }
   else if (sizeDropdown.SelectedItem.Equals("100g"))
    {
       amount = 7.99;
    }
   else if (sizeDropdown.SelectedItem.Equals("150g"))
   {
      amount = 9.99;
   }
      priceLabel.Text = amount.ToString();
}

希望這對您有用。

Aspx代碼:

<asp:DropDownList ID="sizeDropdown" runat="server" AutoPostBack="True" 
            onselectedindexchanged="sizeDropdown_SelectedIndexChanged">
            <asp:ListItem>Select</asp:ListItem>
            <asp:ListItem Value="4.99">50gms</asp:ListItem>
            <asp:ListItem Value="7.99">100g</asp:ListItem>
        </asp:DropDownList>
        <asp:Label ID="priceLabel" runat="server" Text="Label"></asp:Label>

.Cs代碼

 protected void sizeDropdown_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (sizeDropdown.SelectedItem.Text != "Select")
        {
            priceLabel.Text = sizeDropdown.SelectedItem.Value;

        }
        else
        {
            priceLabel.Text = "";
        }
    }

快速解決方案

請用以下代碼替換您的代碼。

aspx頁面:

<asp:DropDownList  ID="sizeDropdown" runat="server"  OnSelectedIndexChanged="sizeDropdown_SelectedIndexChanged" AutoPostBack="True"></asp:DropDownList>

代碼頁:

if(!Page.IsPostBack)
{
   sizeDropdown.Items.Add("50g");
   sizeDropdown.Items.Add("100g");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM