2010-12-03 63 views
0

兩個repeateres之間的值,我有兩個中繼器,看起來像這樣:如何通過在同一個頁面

Arrange By: Name | Age | Area 

什麼,我想現在要做的就是填充從字母表數據庫中的第二個中繼器,並如果點擊了年齡,那麼第二個轉發器會從數據庫中填充一些年齡範圍!

我已經實現了我的想法通過放置一個超鏈接的第一個中繼器,該通行證 - 使用它的NavigateUrl屬性 - 一個網址可以在同一頁但有一些查詢字符串值!

我被告知querystrings用於將值從一個頁面傳遞到另一個頁面,而不是相同的頁面......並且我還想使用一些AJAX(腳本管理器和更新面板),但事實證明我有在我的中繼器中使用一些服務器控件而不是html控件,以便它能夠回發到服務器

我希望你能幫我實現將repeater1的值傳遞給repeater2的好實現,如果你認爲我已經說了錯誤請告訴我!

感謝提前:)

編輯

my.aspx.cs

protected void Page_Load(object sender, EventArgs e) 
     { 
      string commandString1 = "SELECT [arrange_by_id], [arrange_by] FROM [arrange_by]"; 


      using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["testConnectionString"].ConnectionString)) 
      { 
       using (SqlCommand cm = new SqlCommand(commandString1, cn)) 
       { 
        cn.Open(); 

        using (SqlDataReader dr = cm.ExecuteReader()) 
        { 
         ArrangeBy_rpt.DataSource = dr; 
         ArrangeBy_rpt.DataBind(); 
        } 
       } 
      } 
      } 

    void arrange_lnkbtn_command(object sender, CommandEventArgs e) 
    { 
     Label1.Text = (e.CommandArgument).ToString(); 
    } 

my.aspx

<asp:Repeater ID="ArrangeBy_rpt" runat="server"> 
     <ItemTemplate> 
      <asp:LinkButton id="arrange_lnkbtn" OnCommand="arrange_lnkbtn_command" CommandArgument='<%#Eval("arrange_by_id") %>' runat="server"> 
      <%# Eval("arrange_by") %> 
      </asp:LinkButton> 
     </ItemTemplate> 
     <SeparatorTemplate> | </SeparatorTemplate> 
    </asp:Repeater> 
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 

編譯錯誤

編譯器錯誤消息:CS1061:「ASP.sortingcontrol_ascx」不包含關於「arrange_lnkbtn_command」和沒有擴展方法「arrange_lnkbtn_command」接受類型「ASP.sortingcontrol_ascx」的第一個參數的定義可以找到(是否缺少using指令集引用?)

Line 4: <asp:Repeater ID="ArrangeBy_rpt" runat="server"> 
Line 5:  <ItemTemplate> 
Line 6:  <asp:LinkButton id="arrange_lnkbtn" OnCommand="arrange_lnkbtn_command" CommandArgument='<%#Eval("arrange_by_id") %>' runat="server"> 
Line 7:  <%# Eval("arrange_by") %> 
Line 8:  </asp:LinkButton> 

回答

1

沒有什麼錯本身使用的查詢字符串,但它不應該被用於敏感數據,用戶可以通過「黑客」修改將數據傳遞到同一頁網址。但是,它不是ASP.NET WebForms中的標準做法,因爲它不會回發頁面上任何其他控件的值(因此,如果不手動重新填充它們,它們將不會保留它們的狀態在每個頁面加載)。但是,如果這對你來說不是問題,請隨意使用查詢字符串。

Howecer,一般你可以使用一個服務器端控件像asp:Buttonasp:LinkButton,然後處理自己的onclick事件。但是,要通過一個數據傳遞數據,您可以使用該按鈕的CommandNameCommandArgument屬性,然後處理事件OnCommand

<asp:LinkButton id="LinkButton1" 
      Text="Click Me" 
      CommandName="Age" 
      CommandArgument="18" 
      OnCommand="LinkButton_Command" 
      runat="server"/> 

在後臺代碼:

void LinkButton_Command(Object sender, CommandEventArgs e) 
    { 
    var data = GetData(e.commandArgument); // implement a method that gets your data filtered by the argument passed from the button 
    Repeater2.DataSource = data; 
    Repeater2.DataBind(); 
    } 
+0

你的答案是簡單而直接,但如果你看過我的問題這個LinkBut​​ton的放置一箇中繼器內並根據點擊LinkBut​​ton的價值,第二個Repeater將根據這個值填充 - 如何做到這一點!這是我希望知道的 - – lKashef 2010-12-03 09:50:18

相關問題