Кнопка обновления, возвращающая все нули

Кнопка «Обновить» возвращает все нули.

Я нажимаю «Изменить», и все отображается нормально.

Когда я нажимаю «Обновить», столбцы: datetime, col1, col2 и col3 становятся нулевыми на экране и в «MDF».

"Удалить" работает нормально.

Файл «mdf» работает правильно с правильной строкой подключения.

Вероятно, это просто синтаксис.

Может кто-нибудь посмотреть.

<asp:GridView ID="GridView1" 
    runat="server"
    DataSourceID="SqlDataSource1"
    AutoGenerateColumns="false"
    DataKeyNames="idt"
    AutoGenerateEditButton="true" 
    AutoGenerateDeleteButton="true"
    showfooter="true">
    <Columns>
        <asp:BoundField DataField="idt" HeaderText="idt" Readonly="true" SortExpression="idt" />
        <asp:BoundField DataField="datetime" HeaderText="datetime" SortExpression="datetime" />
        <asp:TemplateField SortExpression="col1" HeaderText="col1">
                <ItemTemplate>
                    <asp:TextBox ID="txt1" runat="server" Text='<%# Eval("col1") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col1TextBox" text='<%#Eval("col1")%>' runat="server"/>
                </EditItemTemplate>
       </asp:TemplateField>
        <asp:TemplateField SortExpression="col2" HeaderText="col2">
                <ItemTemplate>
                    <asp:TextBox ID="txt2" runat="server" Text='<%# Eval("col2") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col2TextBox" text='<%#Eval("col2")%>' runat="server"/>
                </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField SortExpression="col3" HeaderText="col3">
                <ItemTemplate>
                    <asp:TextBox ID="txt3" runat="server" Text='<%# Eval("col3") %>' />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="col3TextBox" text='<%#Eval("col3")%>' runat="server"/>
                </EditItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField SortExpression="rowtotal" HeaderText="Row Total">
                <ItemTemplate>
                    <asp:TextBox ID="txtrowtot" runat="server" />
                </ItemTemplate>
                <EditItemTemplate>
                    <asp:textbox id="rowtotTextBox" runat="server"/>
                </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>
<asp:SqlDataSource
    id="SqlDataSource1"
    ConnectionString="<%$ ConnectionStrings:Total %>"
    SelectCommand="SELECT * FROM [test];"
    UpdateCommand="UPDATE [test] SET [datetime] = @datetime, [col1] = @col1, [col2] = @col2, [col3] = @col3 WHERE [idt] = @idt;"
    DeleteCommand="DELETE FROM [test] WHERE [idt] = @idt;"
    InsertCommand="INSERT INTO [test] [datetime], [col1], [col2], [col3] VALUES @datetime, @col1, @col2, @col3;"
    runat="server">
    <UpdateParameters>
        <asp:Parameter Name="idt" Type="Int32" />
        <asp:Parameter Name="datetime" Type="String" />
        <asp:Parameter Name="col1" Type="Double" />
        <asp:Parameter Name="col2" Type="Double" />
        <asp:Parameter Name="col3" Type="Double" />
    </UpdateParameters>
    <DeleteParameters>
        <asp:Parameter Name="idt" Type="Int32" />
    </DeleteParameters>
</asp:SqlDataSource>

person noviscientia    schedule 31.08.2014    source источник


Ответы (1)


Проблема с TemplateFields, они не передаются SqlDataSource автоматически. Вы должны написать код в событии RowUpdating GridView, чтобы передать значения каждому из параметров, на которые ссылается команда обновления. Обратитесь к ответу, приведенному в этот форум

person Sam    schedule 31.08.2014
comment
Также см. этот поток в SO для другого примера. stackoverflow.com/questions/13938256 / - person Sam; 01.09.2014