この問題に遭遇するのは初めてなので、誰か助けてください。これが私の問題です。2つのドロップダウンリストがあります。2番目のドロップダウンリストは最初のドロップダウンリストで選択したアイテムから入力され、2番目のドロップダウンリストでは選択したアイテムに応じてグリッドビューに入力されます。ここで問題となるのは、2番目のddlからアイテムを選択するたびに、それがポストバックし、選択したアイテムの代わりに最初のアイテムが選択されることです。
ここに私のコードがあります:(aspx)
<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);
}
これで私を助けてください。ありがとう!