2012-07-18 18 views
2

我有以下中繼器可以讓來自SQL數據庫的數據填充,假設有四列。其中三個顯示在中繼器(Name,Min,Max)中,第四個是表中的主鍵。如果需要,我可以將主鍵字段添加爲中繼器中的不可見標籤。將中繼器中的行與SQL數據庫中的行關聯起來

<asp:repeater id="rpt" runat="server"> 
    <ItemTemplate>             
     <asp:Label ID="repeaterLbl" text = <%#Container.DataItem("Name")%> runat="server"/> 
     <asp:Textbox ID="repeaterMinNumber" text = <%#Container.DataItem("Min")%> runat="server"/> 
     <asp:Textbox ID="repeaterMaxNumber" text = <%#Container.DataItem("Max")%> runat="server"/> <br />        
    </ItemTemplate> 
</asp:repeater> 

我的問題是,如果我改變文本框的文本字段(MIN或MAX),並希望將數據備份保存到SQL表,我怎麼能有正確的主在轉發正確的行關聯鍵(或SQL表中的行)?如果在代碼隱藏中提供代碼,請在Visual Basic中進行。

+0

名稱是否唯一地定義了存儲的內容,以便它可以成爲數據庫中的主鍵?如果不是,用戶如何看到她正在改變的具有相同名稱的兩個條目中的哪一個? – Mark 2012-07-18 23:17:22

+0

感謝您的問題。然而,下面的答案正是我所尋找的,「名稱」是否獨一無二不是問題。 – Dogahe 2012-07-20 13:25:43

+0

如果名稱是獨一無二的,您不需要隱藏字段 - 使事情變得更容易 – Mark 2012-07-20 18:59:33

回答

1

我已經看到隱藏字段用於您在此描述的目的。

<asp:HiddenField ID="repeaterKey" runat="server" 
       Value='<%#Container.DataItem("KeyField")%>' /> 

然後,您可以參考隱藏字段,你會等領域(通過ID),但不擔心露出的關鍵客戶,最終用戶等

至於訪問正確的鍵將重複字段中的每個項目關聯起來。我通常會看到使用.FindControl這樣我們的網絡開發人員:

For nRow = 0 To rpt.Items.Count - 1 

     Dim MyKey As New HiddenField 

     MyKey = rpt.Items(nRow).FindControl("repeaterKey") 

     Response.Write(MyKey.Value) // Or do somthing useful with MyKey 

    Next 

,或者通過使用鍵字段值的發現通過中繼器按需事件值被通過按鈕或其他控件的CommandNameCommandArgument性質過去了。查看微軟文檔瞭解更多關於如何做到這一點的信息。

+0

非常感謝!這正是我正在尋找的。 – Dogahe 2012-07-20 13:26:10

相關問題