2015-08-14 223 views
0

我想根據條件動態更改ASP.NET用戶控件UI中元素的位置。例如: - 這是我的用戶控制的正常佈局enter image description hereDynamicaly自定義用戶控件的UI

現在我想根據條件重新定位編輯按鈕,如下所示。 enter image description here

我可以想到下面的方法,但不知道他們是否是最好的方法來做到這一點。

  1. 我們可以在我的用戶控件的所需位置創建一個按鈕,然後根據此條件顯示該按鈕並隱藏原始按鈕。所以用戶控件在用戶界面中將有兩個按鈕(一個是內聯,另一個是新行)。根據我的情況,我分別顯示或隱藏它們。
  2. 創建另一個用戶控件並使用它。

但我想這個小改動的同類矯枉過正 中是否有任何最佳已知方法/更好的解決方案在那裏處理此類比我能想到的任何 建設性的意見,將有助於。

回答

0

您可以創建兩個按鈕,一個按鈕位於我的用戶控件的所需位置,另一個位於目標位置。第一個按鈕默認顯示爲block,第二個按鈕默認顯示爲none。取決於你的條件,你可以改變第一個按鈕和第二個按鈕的類,使第一個隱藏,第二個按塊顯示。下面是一個例子:

在源:

<style> 
    .HideButton { 
     display: none; 
    } 

    .ShowButton { 
     display: block; 
    } 
</style> 

<form id="form1" runat="server"> 
    <div> 
     <table> 
      <tr> 
       <td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td> 
       <td> 
        <asp:Button ID="Button1" runat="server" Text="Button" /> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <asp:Button CssClass="HideButton" ID="Button2" runat="server" Text="Button /> 
       </td> 
       <td">&nbsp;</td> 
      </tr> 
     </table> 
    </div>  
</form> 

在後面的代碼:

if (something) 
      { 
       Button1.CssClass = "HideButton"; 
       Button2.CssClass = "ShowButton"; 
      } 

另一個解決方案是如下改變td標籤的innerHTML:

在源:

<form id="form1" runat="server"> 
     <div> 
      <table> 
       <tr> 
        <td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td> 
        <td id="DesiredLocation" runat="server"><input type="button" value="button1" /></td> 
       </tr> 
       <tr> 
        <td id="TargetLocation" runat="server"></td> 
        <td"></td> 
       </tr> 
      </table> 
     </div>  
    </form> 

並在aspx代碼:

if (something) 
      { 
      TargetLocation.InnerHtml = DesiredLocation.InnerHtml; 
      DesiredLocation.InnerHtml = ""; 
      } 

希望這項工作。

+0

順便說一下下拉和按鈕,我在我的帖子中顯示不是連續的新行,有幾個隱藏的div在那裏。其次,我只想按照IF語句中的描述更改UI,而不是事件。 – Programmerzzz

+0

這個想法是一樣的。而不是事件你可以使用if語句。我會更新答案。 –

+0

:「您可以使用一個按鈕」您是指編輯按鈕還是全新的按鈕?如果它是一個新的,那麼它類似於我的方法1,而不是我們正在使用樣式,對嗎?如果它是現有的按鈕,該CSS如何找出現有按鈕的目標位置。 – Programmerzzz