2016-01-15 48 views
0

我知道這是一個相當常見的問題,但我無法通過互聯網找到解決方案。也許我進入了隧道視野,我不知道。Dropdownlist重置並在回發期間不保留值

我有一個gridview和與它相關的下拉列表不斷重置。這是幾個小時,我仍然有這個問題。

具有DropDownList的

<table class="filtertable" EnableViewState="true"> 
     <tr align="center"> 
      <td width="100%"> 
       <asp:Button ID="btnNew" runat="server" Text="Yeni Kayıt" OnClick="btnNew_OnClick" 
        CssClass="btn" Visible="true" /> 
       <asp:Button ID="btnArama" runat="server" Text="Gümrük Arama" OnClick="btnArama_Click" 
        CssClass="btn" Visible="false" /> 
      </td> 
     </tr> 
     <tr runat="server" id="trGumrukArama"> 
      <td> 
       <fieldset style="margin-top: 5px"> 
        <legend>Ülke Gümrük Arama</legend> 
        <table EnableViewState="true"> 
         <tr> 
          <td> 
           <asp:Label runat="server" ID="lblUlke">Ülke:&nbsp</asp:Label> 
          </td> 
          <td> 
           <asp:DropDownList runat="server" ID="drpUlke" AppendDataBoundItems="true" EnableViewState="true" 
            OnSelectedIndexChanged="drpUlke_SelectedIndexChanged" AutoPostBack="true"> 
           </asp:DropDownList> 
          </td> 
          <td> 
           <asp:Label runat="server" ID="lblGumrukKodu"> Gümrük Kodu: &nbsp</asp:Label> 
          </td> 
          <td> 
           <asp:TextBox runat="server" ID="txtGumrukKodu"></asp:TextBox> 
          </td> 
          <td> 
           <asp:Label runat="server" ID="lblGumrukAdi">Gümrük Adı: &nbsp</asp:Label> 
          </td> 
          <td> 
           <asp:TextBox runat="server" ID="txtGumrukAdi"></asp:TextBox> 
          </td> 
          <td> 
           <asp:Button runat="server" CssClass="btn" ID="btnSearch" Text="Ara" OnClick="btnSearch_OnClick" /> 
          </td> 
         </tr> 
        </table> 
       </fieldset> 
      </td> 
     </tr> 
    </table> 

代碼隱藏表

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      drpUlke_Bind(); 
      BindList(); 
      //drpUlke.SelectedValue = ViewState["ListUlkeKod"].ToString(); 
     } 
    } 

    protected void drpUlke_Bind() 
    { 
     DataTable dt = CacheManager.UlkelerGercek.Tables[0]; 
     DataTable dtNew = CacheManager.UlkelerGercek.Tables[0].Clone(); 

     DataRow drseperator = dtNew.NewRow(); 
     drseperator["id"] = -1; 
     drseperator["harfKod"] = ""; 
     drseperator["adi"] = "------------------------------------"; 
     dtNew.Rows.Add(drseperator); 

     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      DataRow dr = dtNew.NewRow(); 
      dr.ItemArray = dt.Rows[i].ItemArray; 
      dr["adi"] = dr["harfKod"] + " - " + dr["adi"]; 
      if (dr["harfKod"].ToString().Trim() == "TR") 
       dtNew.Rows.InsertAt(dr, 0); 
      else 
       dtNew.Rows.Add(dr); 
     } 
     drpUlke.DataSource = dtNew; 
     drpUlke.DataValueField = "harfKod"; 
     drpUlke.DataTextField = "adi"; 
     drpUlke.DataBind(); 

     drpKaydetUlke.DataSource = dtNew; 
     drpKaydetUlke.DataValueField = "harfKod"; 
     drpKaydetUlke.DataTextField = "adi"; 
     drpKaydetUlke.DataBind(); 
    } 

    protected void drpUlke_SelectedIndexChanged(object sender, EventArgs e) 
    { 

    } 

. 
. 
. 
. 
. 

private void BindList() 
    { 
     int TotalCount; 
     int Start = (CurrentPageIndex - 1) * _pageRowCount; 

     string UlkeKodu = drpUlke.SelectedValue; 
     //ViewState["ListUlkeKod"] = UlkeKodu; 
     string GumrukKodu = txtGumrukKodu.Text; 
     string GumrukAdi = txtGumrukAdi.Text; 
     //drpUlke.SelectedValue = ViewState["ListUlkeKod"].ToString(); 

     DataSet ds = (Stored Procedure Here) 
     gvUlkeGumruk.DataSource = ds; 
     gvUlkeGumruk.DataBind(); 

     int intTotalCount; 
     int intCurrentCount; 

     intTotalCount = TotalCount == -1 ? 0 : TotalCount; 
     intCurrentCount = ds.Tables[0].Rows.Count - 1; 

     pcBottom.TotalRowCount = intTotalCount; 
     pcBottom.PageRowCount = _pageRowCount; 
     pcBottom.CurrentRowCount = intCurrentCount; 

     pcBottom.BindPaging(); 

     pcBottom.Visible = intTotalCount > 0; 
    } 

就在相關零部件,如果我失去了一些東西,請讓我知道。

我嘗試使用viewstate變量,但他們也不斷重置。

編輯:

我碰到幾個帖子互聯網上關於這個問題。他們說,作爲一個解決方案,他們的下拉列表值域不是唯一的。我檢查了值字段,它的值都是唯一的。

+0

發佈您的'drpUlke_SelectedIndexChanged' – Webruster

+0

這是一個空方法atm,我之前曾經嘗試過,但它也沒有解決問題。試圖在其中添加一個變量,以通過viewstate變量保存選定的值,沒有工作:( –

回答

1

當您希望DDL數據在回發期間生存時,您必須在回發生命週期中重新加載DDL。您可以手動執行此操作,也可以啓用您必須在控制鏈上執行的ViewState。

如果您在控制/頁面init中加載數據的手動路由(無論IsPostBack標誌是什麼),您可以通過確保數據被緩存來提高性能。您將跳過ViewState(對客戶端性能有好處),但會更多地擊中您的數據庫。如果這是一個問題,那麼你可以回到使用ViewState。

+0

他已經在使用viewstate。 – JonH

+0

我們確定頁面指令或控制指令,它已經設置? – Josh

1

這可能是因爲AppendDataBoundItems="true"。刪除該屬性,然後再試一次

+0

沒有解決問題:( –

1

上述答案在他們自己的案例中是正確的,不會被視爲不正確。由於我的問題的性質,我不能指定一個作爲答案。

我最終發送下拉選擇作爲請求參數到其他頁面。我們正在使用自定義分頁機制,這就是我必須以這種方式結束的原因。

相關問題