2

我有以下中继器,它被来自 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> 

我的问题是,如果我更改文本框文本字段(最小值或最大值)并希望将数据保存回 SQL 表中,我如何将转发器中的正确行与正确的主键(或 SQL 中的行桌子)?如果在代码隐藏中提供代码,请在 Visual Basic 中这样做。

4

1 回答 1

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 文档以获取有关如何执行此操作的更多信息。

于 2012-07-18T22:44:51.077 回答