0

データベースに更新して保存する値を取得するためにループしようとしているグリッドビューがあります。グリッドビュー コード:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
                AutoGenerateColumns="False" 
                Width="1020px" EnableTheming="True" PageSize="25" CellPadding="4" 
                ForeColor="#333333" >
                <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                <Columns>
                    <asp:BoundField DataField="Column1" HeaderText="Col1" ReadOnly="True" >
                    <ItemStyle Width="35px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="Column2" HeaderText="Col2" />
                    <asp:BoundField DataField="Column3" HeaderText="Col3" />
                    <asp:BoundField DataField="Column4" HeaderText="Col4" />
                    <asp:BoundField DataField="Column5" HeaderText="Col5" />
                    <asp:TemplateField HeaderText="Col6">
                        <EditItemTemplate>
                            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Column6") %>'></asp:Label>
                        </EditItemTemplate>
                        <ItemTemplate>
                            <asp:Label ID="Label2" runat="server" Text="$"></asp:Label>&nbsp;
                            <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Column6", "{0:f}") %>' CssClass="boxright"></asp:TextBox>
                        </ItemTemplate>
                        <ItemStyle HorizontalAlign="Right" VerticalAlign="Middle" />
                    </asp:TemplateField>
                    <asp:BoundField DataField="Column7" ReadOnly="True" >
                    <ItemStyle Width="35px" />
                    </asp:BoundField>
                    </Columns>
                <EditRowStyle BackColor="#999999" />
                <FooterStyle BackColor="#003399" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="White" />
                <PagerSettings Mode="NextPreviousFirstLast" />
                <PagerStyle BackColor="#003399" ForeColor="White" HorizontalAlign="Left" />
                <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                <SortedAscendingCellStyle BackColor="#E9E7E2" />
                <SortedAscendingHeaderStyle BackColor="#506C8C" />
                <SortedDescendingCellStyle BackColor="#FFFDF8" />
                <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
            </asp:GridView>

ボタンクリックイベントを使用して、ストアド SQL プロシージャをトリガーし、次のようにテーブルを更新しています...

Protected Sub btnB_Save_Click(sender As Object, e As EventArgs) Handles btnB_Save.Click
Dim gvRow As GridViewRow
    Dim str As String = ""
    For Each gvRow As GridViewRow In gv_Budgets.Rows
        str = ((str + gvRow.Cells(0).Text) + (gvRow.Cells(1).Text) + (gvRow.Cells(2).Text) + (gvRow.Cells(3).Text) + (gvRow.Cells(4).Text) + (gvRow.Cells(6).Text))
    Dim dtRow As TextBox = CType(gvRow.FindControl("TextBox1"), TextBox)
    Response.Write(dtRow.Text)

    dt = dal.ExecuteStoredProc(DAL.dbType.SqlServer, "UpdateData", "@col1", str + gvRow.Cells(0).Text, "@col2", str + gvRow.Cells(1).Text, "@col3", str + gvRow.Cells(2).Text, "@col4", str + gvRow.Cells(3).Text, "@col5", str + gvRow.Cells(4).Text, "@col6", dtRow.Text, "@col7", str + gvRow.Cells(6).Text, "@txt1", Textbox2.Text, "@txt2", Textbox3.Text)

    Next
End Sub 

ただし、「dt(datatable)」式の下に青い構文エラー行が表示され続けます...これがどのように、またはなぜこれを行っているかについてのアイデアはありますか?

4

1 に答える 1

0

ループの外側で gvRow を宣言し、ループの定義で再宣言したため、「Variable gvRow hides...」エラーが発生しています。

Dim gvRow As GridViewRow    ' First declaration
Dim str As String = ""
For Each gvRow As GridViewRow In gv_Budgets.Rows    ' Skip the "As GridViewRow here

他のエラーはあなたの表現から来ています:

dt = dal.ExecuteStoredProc( ...

dt は、どこかにある DataTable 型のグローバル変数であると想定しています (リストにないため)。この場合、sProc が文字列を返し、それをデータテーブル オブジェクトに挿入しようとしているように見えます。sProc が有効なデータテーブルを返すことを確認してください。それまでの間、結果を文字列に挿入して、うまくいくまで物事を機能させようとするかもしれません。

于 2012-05-25T12:59:06.700 に答える