0

ストアド プロシージャによって指定されたデータを取得するグリッド ビューがあります。

スクリーンショット 1

ストアド プロシージャは GetEverything と呼ばれます。このステートメントは、人物の詳細を含むテーブルと船舶の詳細を含むテーブルの 2 つのテーブルからの情報で構成されています。ストアド プロシージャの select ステートメントには、次の Where 句が含まれています。

WHERE Vessel.ArchiveStatus = 0

デフォルトでは、フロント エンド アプリケーションを使用して作成されたすべての新しいレコードには、db の ArchiveStatus に「0」が与えられます。

したがって、グリッドビューには、ArchiveStatus が 0 のレコードのみが表示されます。これは、デフォルトではすべてです。

2 つのボックス、[すべてをチェック] と [すべてをチェック解除] は完全に機能しています。

ここで必要なのは、1 つまたは複数の REF を選択し、[Archive Records] ボタンをクリックして、データベースの 0 をその VesselREF の 1 に更新することです。

誰でもこれを行う方法をアドバイスし、Default.aspx.vb ファイル/アーカイブ レコード ボタンのイベント ハンドラーに配置するサンプル コードを教えてください。

これにより、グリッド ビューにはアーカイブされていないレコードのみが表示され、独自の SQL を使用して別のグリッド ビューを作成し、アーカイブされたレコードを表示することができます。

GridView.aspx

    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="REF,VesselREF" DataSourceID="SqlDataSource1" Height="132px" 
        style="text-align: center; font-family: Calibri; font-size: medium" 
        Width="508px" BackColor="#C4FFC4">
        <AlternatingRowStyle BackColor="White" />
        <Columns>
            <asp:TemplateField HeaderText="REF" InsertVisible="False" SortExpression="REF">

                <ItemTemplate>
                    <a href="Details.aspx?REF=<%# Eval("REF")%>"><%# Eval("REF")%></a>
                    <asp:CheckBox ID="RecordSelector" runat="server" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
                SortExpression="FirstName" />
            <asp:BoundField DataField="Surname" HeaderText="Surname" 
                SortExpression="Surname" />
            <asp:BoundField DataField="VesselName" HeaderText="VesselName" 
                SortExpression="VesselName" />
            <asp:BoundField DataField="VesselREF" HeaderText="VesselREF" 
                InsertVisible="False" ReadOnly="True" SortExpression="VesselREF" />

        </Columns>
    </asp:GridView>
4

2 に答える 2

1

GridView.DataKeys プロパティを使用し、各 DataKey の行 ID 値を格納する必要があります。次に、更新するときに、GridViewRows を列挙し、FindControl を使用して CheckBox を見つけます。次に、ボックスがチェックされているかどうかを確認し、チェックされている場合は文字列に連結します...

' on update_pressed()...
Dim Ids as new StringBuilder()
For each gvr as gridViewRow in myGv.Rows
   Dim cbx as CheckBox = gvr.FindControl("myCheckBoxID")
   if cbx.Checked Then
      Ids.Append(gvr.DataKeys(gvr.RowIndex).Value.ToString & ",")
   End If
End For
' Ids now contains "5,6,87,356,2355," etc

その後、SQL CSV to Table Variable 関数を使用して、ID 値をテーブル変数に入れ、操作することができます。

于 2012-11-05T15:52:16.447 に答える