簡體   English   中英

Dropdown selectedIndexChange Event正在調用Radiobutton selectedIndexChange事件。兩個控件都在轉發器內

[英]Dropdown selectedIndexChange Event is calling Radiobutton selectedIndexChange event.Both controls are inside repeater

在我的轉發器控件里面,我有一個radiobutton列表,一個下拉列表和一個文本框。
在radiobutton的selectedIndexChange事件中,我是綁定下拉列表,因為我的下拉值對於每個radiobutton選項應該是不同的。

在此之前,我的功能完美無缺。 現在我想自動填充文本框值,該值將是下拉列表的選定文本,但下拉列表的SelectedIndexChangeEvent正在調用Radiobutton的selectedIndexChange事件。

對此有何幫助?

我將Autopostback設置為下拉列表的true。 Dropdown selectedIndexChange事件正在調用radiobutton selectedindexchange事件。


////////////文件背后的代碼//////////////

Html Part of the code:

<form id="form1" runat="server">
        <div>
            <asp:Repeater ID="Repeater1" runat="server">
                <HeaderTemplate>
                    <table border="1">
                        <tr>
                            <th>Name</th>
                            <th>Country</th>
                            <th>City</th>
                            <th>Comments</th>
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                    <tr>
                        <td>
                            <asp:Label ID="lblName" Text='<%# Eval("Name") %>' runat="server" />
                        </td>
                        <td>
                            <asp:RadioButtonList ID="rblCountry" runat="server" AutoPostBack="true" OnSelectedIndexChanged="rblCountry_SelectedIndexChanged">
                                <asp:ListItem Text="United States" Value="US"></asp:ListItem>
                                <asp:ListItem Text="United Kingdom" Value="UK"></asp:ListItem>
                                <asp:ListItem Text="Australia" Value="Aus"></asp:ListItem>
                            </asp:RadioButtonList>
                        </td>
                        <td>
                            <asp:DropDownList ID="ddlCity" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlCity_SelectedIndexChanged">
                            </asp:DropDownList>
                        </td>
                        <td>
                            <asp:TextBox ID="txtCity" runat="server"></asp:TextBox>
                        </td>
                    </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>
        </div>
    </form>

   code behind part:
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            PopulateList();
        }
    }

    private void PopulateList()
    {
        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[1] { new DataColumn("Name", typeof(string))});
        dt.Rows.Add("John Hammond");
        dt.Rows.Add("Mudassar Khan");
        dt.Rows.Add("Suzanne Mathews");
        dt.Rows.Add("Robert Schidner");
        Repeater1.DataSource = dt;
        Repeater1.DataBind();
    }

    protected void rblCountry_SelectedIndexChanged(object sender, EventArgs e)
    {
        RepeaterItem item = (sender as RadioButtonList).NamingContainer as RepeaterItem;
        string countryName = (item.FindControl("rblCountry") as RadioButtonList).Text;
        DropDownList ddlCity = item.FindControl("ddlCity") as DropDownList;
        TextBox txtCity = item.FindControl("txtCity") as TextBox;
        ListItem li;
        if (ddlCity != null)
        {
            ddlCity.Items.Clear();
            switch (countryName)
            {
                case "US":
                    li = new ListItem() { Text = "Chicago", Value = "Chicago" };
                    ddlCity.Items.Add(li);
                    li = new ListItem() { Text = "Washington", Value = "Washington" };
                    ddlCity.Items.Add(li);
                    break;
                case "UK":
                    li = new ListItem() { Text = "Manchester", Value = "Manchester" };
                    ddlCity.Items.Add(li);
                    li = new ListItem() { Text = "London", Value = "London" };
                    ddlCity.Items.Add(li);
                    li = new ListItem() { Text = "Scotland", Value = "Scotland" };
                    ddlCity.Items.Add(li);
                    break;
                case "Aus":
                    li = new ListItem() { Text = "Sydney", Value = "Sydney" };
                    ddlCity.Items.Add(li);
                    li = new ListItem() { Text = "Melbourne", Value = "Melbourne" };
                    ddlCity.Items.Add(li);
                    break;
            }
            if (ddlCity != null && ddlCity.SelectedItem != null)
                txtCity.Text = ddlCity.SelectedItem.Text;
        }
    }

    protected void ddlCity_SelectedIndexChanged(object sender, EventArgs e)
    {
        RepeaterItem item = (sender as DropDownList).NamingContainer as RepeaterItem;
        DropDownList ddlCity = item.FindControl("ddlCity") as DropDownList;
        TextBox txtCity = item.FindControl("txtCity") as TextBox;
        txtCity.Text = ddlCity.SelectedItem.Text;
    }

暫無
暫無

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

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