将转发器中的行与SQL数据库中的行相关联

时间:2012-07-18 20:48:29

标签: sql vb.net repeater

我有以下转发器,它被来自SQL数据库的数据填充,比如四列。其中三个显示在转发器中(Name,Min,Max),第四个是表中的主键。如果需要,我可以将主键字段添加为转发器中的不可见标签。

<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中执行此操作。

1 个答案:

答案 0 :(得分:1)

我见过隐藏的字段用于你在这里描述的目的。

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

然后您可以像其他字段一样引用隐藏字段(通过ID),但不必担心向客户端,最终用户等泄露密钥。

至于访问正确的键以关联重复字段中的每个项目。我通常会看到我们的Web开发人员使用.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属性或其他控件传递的键字段值,通过转发器OnCommand事件发现值。有关如何执行此操作的详细信息,请查看microsoft docs。