“更新”按钮返回所有空值。
我点击“编辑”,一切都显示正常。
当我点击“更新”时,它会使屏幕和“MDF”中的列:datetime,col1,col2和col3都为空。
“删除”工作正常。
“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 :(得分:0)
问题出在TemplateField
上,它们不会自动传递给SqlDataSource
。您必须在GridView的RowUpdating
事件中编写代码,以将值传递给update命令引用的每个参数。请参阅this论坛