2014-08-31 97 views
0

「更新」按鈕返回所有空值。更新按鈕返回所有空值

我點擊「編輯」,一切都顯示ok。

當我點擊「更新」時,它使列: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> 

回答

0

的問題是與TemplateField S,它們不會傳遞給自動SqlDataSource。您必須在GridView的RowUpdating事件中編寫代碼,以將值傳遞給update命令引用的每個參數。請參閱this論壇中給出的答案

+0

另請參見另一個示例中的此主題。 http://stackoverflow.com/questions/13938256/updating-gridview-with-sqldatasource-in-asp-net – Sam 2014-08-31 23:57:48