簡體   English   中英

當用戶從頁面回發的下拉列表中選擇任何項時,我想立即調用函數嗎?

[英]I want to call a function immediately as the user select any item from dropdown on page postback how to do it?

<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_ItemDataBound">
                <ItemTemplate>
                    <tr>
                        <td><%#subtypes.FindByPk(Convert.ToInt32(Eval("SubitemID"))).title%></td>
                        <td><%#Eval("quantity")%></td>
                        <td><%#ThanaRecord.FindByPk(Convert.ToInt32(Eval("Thanaid"))).title%></td>
                        <td><%#Eval("created_at")%></td>
                        <td> <% if (Employee.GetCurrentEmployee().role == "Admin") { %>
                            <a href="AddDemand.aspx?type=update&id=<%#Eval("id")%>">EDIT</a>

                                <a href="AddDemand.aspx?type=delete&id=<%#Eval("id")%>">DELETE</a>
                            <% } %>
                        <%if (Employee.GetCurrentEmployee().role == "SuperVisor")
                           { %>
                          <asp:DropDownList ID="DropDownList1" runat="server" Width="120px"  AutoPostBack="false" CssClass="form-control">
                     <asp:ListItem Text="Status" Value="0">Status</asp:ListItem>
                              <asp:ListItem Text="Accept" Value="1">Accept</asp:ListItem>
                    <asp:ListItem Text="Reject" Value="2">Reject</asp:ListItem>

                </asp:DropDownList>

                            <%--<asp:textbox runat="server" id="textTest"></asp:textbox>--%>
                        </td>
                        <%} %>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>
CODE:
 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        //DropDownList DropDownList1 = (DropDownList)sender;
        //string SelectedValue = DropDownList1.SelectedValue;
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            DropDownList ddldrop = (DropDownList)e.Item.FindControl("DropDownList1");
            int  value =Convert.ToInt32( ddldrop.SelectedValue);
            Supervisor sup = new Supervisor();
        if (value == 1) {
                sup.Status = "Accept";
                sup.Save();
            }
        }
    }

實現SelectedIndexChanged事件並將AutoPostBack設置為True。

首先,添加SelectedIndexChanged事件,並在下拉列表控件上將AutoPostBack設置為True。

然后在后面的代碼中添加以下代碼,僅排除ScriptManager部分,並使用您的方法存儲或顯示您喜歡的任何位置。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
        DropDownList ddl = sender as DropDownList;
        RepeaterItem rptItems = ddl.NamingContainer as RepeaterItem;
        DropDownList ddlItems = rptItems.FindControl("DropDownList1") as DropDownList;
        ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "showname", "javascript: alert('" + ddlItems.SelectedItem.ToString()   + "');", true);
}

更改:

<asp:DropDownList ID="DropDownList1" 
                  runat="server" 
                  Width="120px"  
                  AutoPostBack="false" 
                  CssClass="form-control">

至:

<asp:DropDownList ID="DropDownList1" 
                  runat="server" 
                  Width="120px"  
                  AutoPostBack="true" 
                  CssClass="form-control"
                  OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged>

背后的代碼:

// event handler - this event will fire for ALL drop downs in the repeater
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{

  // this will tell which drop down fired the event
  var dropdown = (DropDownList)sender;
  // this will tell you the repeater item containing the drop down
  var repeateritem = (RepeaterItem)dropdown.NamingContainer;
}

這會立即觸發事件。

注意:此行為創建一個POST ,它將觸發Page_Load ,如果您在中繼列表上觸發下拉列表事件之前調用DataBind() ,則它將完全不觸發。 確保使用!IsPostback保護DataBind()以避免抑制該事件。

例如:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostback)
    {
        Repeater1.DataSource = SomeDataSource; // whatever
        Repeater1.DataBind();
    }
}

暫無
暫無

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

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