2012-05-15 48 views
0

它是我第一次遇到这个问题,所以请任何人帮助我。 这里是我的问题我有2 dropdownlist,第二个将填充从第一个dropdownlist中选定的项目,并在第二个dropdownlist它将填充gridview取决于所选项目。现在的问题是,每次我从第二个ddl中选择任何物品时,它都会回传,而第一个物品会被选中,而不是我选择的物品。c#第二下拉列表不能保留选定的项目

继承人我的代码:(C++)

    <asp:TableRow> <%--Branch--%> 
         <asp:TableCell HorizontalAlign="Left"> 
          <asp:Label ID="lblBranch" runat="server" Font-Bold="true">Branch:</asp:Label> 
         </asp:TableCell> 
         <asp:TableCell HorizontalAlign="Left"> 
          <asp:DropDownList ID="ddlBranch" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlBranch_SelectedIndexChanged" AppendDataBoundItems="true" /> 
         </asp:TableCell> 
        </asp:TableRow> 

        <asp:TableRow> <%--Recepient--%> 
         <asp:TableCell HorizontalAlign="Left"> 
          <asp:Label ID="lblRecepient" runat="server" Font-Bold="true">Recepient:</asp:Label> 
         </asp:TableCell> 
         <asp:TableCell HorizontalAlign="left"> 
          <asp:DropDownList ID="ddlRecepientDepartment" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlRecepientDepartment_SelectedIndexChanged" AppendDataBoundItems="true" EnableViewState="true"></asp:DropDownList> 
         </asp:TableCell> 
        </asp:TableRow> 

        <asp:TableRow> <%--Gridview Recepient--%> 
         <asp:TableCell></asp:TableCell> 
         <asp:TableCell> 
          <asp:GridView ID="gvRecepientPosition" runat="server" AllowPaging="True" AutoGenerateColumns="False" 
           EmptyDataText="No Record found!" ShowFooter="false" ShowHeader="true" Width="99%" HorizontalAlign="Center" PageSize="5" OnPageIndexChanging="gvRecepientPosition_PageIndexChanging"> 
           <Columns> 
           <%--<asp:TemplateField HeaderText="ID" Visible="false"> 
            <ItemTemplate> 
            <asp:Label ID="lblID" runat="server" Text='<%# Bind("RECID") %>'></asp:Label> 
            </ItemTemplate> 
           </asp:TemplateField>--%> 
           <asp:TemplateField HeaderText="Recepient" Visible="true"> 
            <ItemTemplate> 
             <asp:CheckBox ID="cbRecepientPosition" runat="server"/> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:BoundField DataField="Position" HeaderText="Position" ItemStyle-HorizontalAlign="Left" /> 
           </Columns> 
          </asp:GridView> 
         </asp:TableCell> 
        </asp:TableRow> 

后面的代码:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      ddlBranch.Items.Clear(); 
      GetBranch(); 

     } 


    } 

    private void GetBranch() 
    { 
      var objManager = new EmailNotificationInfoManager(); 
      // ddlBranch.Items.Clear(); 
      ddlBranch.DataSource = objManager.EmailNotificationInfoBranch(); 
      ddlBranch.DataTextField = "Branch"; 
      ddlBranch.DataValueField = "RECID"; 
      ddlBranch.DataBind(); 

      ddlBranch.Items.Insert(0,"<--Select-->"); 


    } 

    protected void ddlBranch_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var objManager = new EmailNotificationInfoManager(); 
     ddlRecepientDepartment.Items.Clear(); 
     ddlRecepientDepartment.DataSource = objManager.EmailNotificationInfoDepartment(Convert.ToInt64(ddlBranch.SelectedValue)); 
     ddlRecepientDepartment.DataTextField = "Department"; 
     ddlRecepientDepartment.DataValueField = "branchID"; 
     ddlRecepientDepartment.DataBind(); 

     ddlRecepientDepartment.Items.Insert(0,"<--Select-->"); 

    } 

    protected void ddlRecepientDepartment_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var objManager = new EmailNotificationInfoManager(); 

     gvRecepientPosition.DataSource = objManager.GetPositionByDepartment(ddlRecepientDepartment.SelectedItem.Text); 
     gvRecepientPosition.DataBind(); 

     Session["PositionDepartment"] = objManager.GetPositionByDepartment(ddlRecepientDepartment.SelectedItem.Text); 

     ddlRecepientDepartment.Attributes.Add("onChange", "this.currentvalue = this.value;"); 
     //Page.Response.Redirect(HttpContext.Current.Request.Url.ToString(), true); 
    } 

请帮我这一个。谢谢!

回答

2

如果你指的是第一个下拉越来越则选择的第一个项目的ddlBranch

为什么这个EnableViewState="true"酒店办理入住手续?

ddlRecepientDepartment.Attributes.Add("onChange", "this.currentvalue = this.value;"); 
+0

@Verbeia谢谢 – Irfan

+0

该网站的用户驱动的护理的一部分。任何有足够声誉的人都可以编辑人员的帖子。 [这可能有帮助](http://meta.stackexchange.com/q/22186/168088)和[so so this](http://meta.stackexchange.com/q/79546/168088)。 – Verbeia

1

你所要做的是在事件处理程序

protected void ddlRecepientDepartment_SelectedIndexChanged 
(object sender, EventArgs e) 
{} 

设置selectedIndex属性当前所选项目的index

+0

每次我选择ddlRecepientDepartment好像它重新填充ddlRecepientDepartment并刷新它,第一个项目将被替代选择我想要的项目的项目。 – JanMichael

+0

@ user1395586:检查此链接http://stackoverflow.com/questions/3496456/setting-dropdownlist-selecteditem-programmatically –

相关问题