2016-05-22 11 views
0

私はasp.netを初めて使用しており、ドロップダウンリストを修正するコードがいくつかあります。ユーザーが検索ボタンを押すと、選択した値がリセットされます。これで私を助けてくれますか?ポストバック後にドロップダウンリストの選択値がリセットされます

これは

<fieldset> 
<legend>Search</legend> 

      <table class="tblsearch"> 
       <tr> 
        <td style="width:80px">Category:</td> 
        <td> 
         <asp:DropDownList ID="DDlistMainCat" runat="server" DataSourceID="sdmaincat" DataTextField="MainCategory" DataValueField="MainCategoryId" AutoPostBack="True"> 
         </asp:DropDownList> 
         <asp:SqlDataSource ID="sdmaincat" runat="server" ConnectionString="<%$ ConnectionStrings:CString %>" SelectCommand="SELECT * FROM [Tbl_MainCategory]"></asp:SqlDataSource> 
        </td> 
       </tr> 
       <tr> 
        <td>Sevices:</td> 
        <td> 
         <asp:DropDownList ID="DDlistCat" runat="server" DataSourceID="sdcat" DataTextField="Category" DataValueField="CategoryId"> 
         </asp:DropDownList> 
         <asp:SqlDataSource ID="sdcat" runat="server" ConnectionString="<%$ ConnectionStrings:CString %>" SelectCommand="SELECT [CategoryId], [Category] FROM [Tbl_Category] WHERE ([MainCategoryRef] = @MainCategoryRef)"> 
          <SelectParameters> 
           <asp:ControlParameter ControlID="DDlistMainCat" Name="MainCategoryRef" PropertyName="SelectedValue" Type="Int32" /> 
          </SelectParameters> 
         </asp:SqlDataSource> 
        </td> 
       </tr> 
      </table> 
    </fieldset> 
    <fieldset> 

    <table class="tblsearch"> 
       <tr> 
        <td style="width:80px">Nationality:</td> 
        <td> 
         <asp:DropDownList ID="DDlistNat" runat="server" DataSourceID="sdnat" DataTextField="Nationality" DataValueField="NationalityId" EnableViewState="true"> 
         </asp:DropDownList> 
         <asp:SqlDataSource ID="sdnat" runat="server" ConnectionString="<%$ ConnectionStrings:CString %>" SelectCommand="SELECT * FROM [Tbl_Nationality]"></asp:SqlDataSource> 
        </td> 
       </tr> 



      <tr> 
        <td>Age:</td> 
        <td> 
         <asp:DropDownList ID="DDlistAge" runat="server" DataSourceID="sdage" DataTextField="Age" DataValueField="AgeV"> 
         </asp:DropDownList> 
         <asp:SqlDataSource ID="sdage" runat="server" ConnectionString="<%$ ConnectionStrings:CString %>" SelectCommand="SELECT [AgeV], [Age] FROM [Tbl_Age]"></asp:SqlDataSource> 
        </td> 
       </tr> 
       <tr> 
        <td>Experience:</td> 
        <td> 
         <asp:DropDownList ID="DDlistExp" runat="server" DataSourceID="sdexp" DataTextField="Exp" DataValueField="ExpV"> 
         </asp:DropDownList> 
         <asp:SqlDataSource ID="sdexp" runat="server" ConnectionString="<%$ ConnectionStrings:CString %>" SelectCommand="SELECT [ExpV], [Exp] FROM [Tbl_Exp]" ></asp:SqlDataSource> 
        </td> 
       </tr> 
        <tr> 
        <td>Gender:</td> 
        <td> 
         <asp:DropDownList ID="DDlistGen" runat="server"> 
          <asp:ListItem>Male</asp:ListItem> 
          <asp:ListItem>Female</asp:ListItem> 
         </asp:DropDownList> 
         </td> 
       </tr> 
        <tr> 
        <td></td> 
        <td> 
         <asp:Button ID="BtnSearch" class="btn" runat="server" Text="Search" OnClick="BtnSearch_Click" /> 
         </td> 
       </tr> 
      </table> 



</fieldset> 

デザインのページであり、これはアクション

public partial class MasterPage : System.Web.UI.MasterPage 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Session["ClientId"] == null) 
     { 
      MyAccBox.Visible = false; 
     } 
     else 
     { 
      MyAccBox.Visible = true; 
      lblfullname.Text = Session["Fullname"].ToString(); 
     } 
    } 

    protected void BtnSearch_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("View.aspx?cat=" + DDlistCat.SelectedValue + "&nat=" + DDlistNat.SelectedValue + "&age=" + DDlistAge.SelectedValue + "&exp=" + DDlistExp.SelectedValue + "&gen=" + DDlistGen.SelectedValue + ""); 
    } 
} 
+0

フォームで有効にビューステートを持っていますか?私はあなたのドロップダウンに 'EnableViewState = true'をを追加します意味。 –

+0

はい有効です –

答えて

0

これは、あなたが!IsPostBackに背後にあるコードからドロップダウンを結合した発生しないです。

if(!IsPostBack) 
{ 
DDlistExp.DataSource = DataSet.Tables[0];  
DDlistExp.DataValueField = "ExpV"; 
DDlistExp.DataTextField = "Exp"; 
DDlistExp.DataBind();  
} 
+0

私はこの条件をpage_loadに追加する必要がありますか? –

+0

私はあなたのソリューションを試しましたが、page_loadアクションで動作していないので、上のデザインページはマスターページにあります。そのたびに、ページをリフレッシュするたびにドロップダウンリストに値が入力されます。私はddlistcat.selectedvalue = session ["ddlistcat"]のようなものを試しました。しかし、動作していない –

+0

マスターページのコードをコードビハインドに書き込んで、ドロップダウンバインド後に選択した値を設定してください。 –

関連する問題