2

たとえば、4 つの列を持つ SQL データベースからのデータで満たされる次のリピーターがあります。そのうちの 3 つ (名前、最小、最大) がリピーターに表示され、4 番目のキーは表の主キーです。必要に応じて、主キー フィールドを非表示のラベルとしてリピーターに追加できます。

<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

または、ボタンのCommandNameまたはCommandArgumentプロパティ、またはその他のコントロールを介して渡されるキー フィールド値を使用して、リピーターの OnCommand イベントを介して値を検出します。その方法の詳細については、Microsoft ドキュメントを確認してください。

于 2012-07-18T22:44:51.077 に答える