在本文中,我们将给您介绍关于使用SqlDataSource删除空字典错误–ASP.netListView的详细内容,此外,我们还将为您提供关于.net–SqlDataSource与ObjectData
在本文中,我们将给您介绍关于使用SqlDataSource删除空字典错误 – ASP.net ListView的详细内容,此外,我们还将为您提供关于.net – SqlDataSource与ObjectDataSource、ASP.NET 2.0:如何将asp:Menu绑定到SqlDataSource?、ASP.NET – DataSourceID和DataSource有什么区别?、asp.net – ObjectDataSource删除问题的知识。
本文目录一览:- 使用SqlDataSource删除空字典错误 – ASP.net ListView
- .net – SqlDataSource与ObjectDataSource
- ASP.NET 2.0:如何将asp:Menu绑定到SqlDataSource?
- ASP.NET – DataSourceID和DataSource有什么区别?
- asp.net – ObjectDataSource删除问题
使用SqlDataSource删除空字典错误 – ASP.net ListView
插入和编辑工作正常并提交到数据库.尝试删除时,我收到此错误:
您已指定delete命令比较sqlDataSource’MySourceHere’上的所有值,但传入值的字典为空.传入有效字典进行删除或将模式更改为OverwriteChanges.
我曾尝试将“CompareAllValues”更改为“OverwriteChanges”以推迟并发工作,但是“中断”更新和删除命令,这似乎是用旧值刷新ListView.我能找到解决此问题的唯一线程涉及更改为“OverwriteChanges”,或者是没有声明“DataKeyNames”的人. Relevent标记低于(我希望).
有什么想法吗?
<asp:sqlDataSource ID="ManageUseRSSource" runat="server" ConflictDetection="CompareAllValues" ConnectionString="<%$ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [DUSER] WHERE [userid] = ? AND (([username] = ?) OR ([username] IS NULL AND ? IS NULL)) AND (([userpass] = ?) OR ([userpass] IS NULL AND ? IS NULL))" InsertCommand="INSERT INTO [DUSER] ([username],[userpass]) VALUES (?,?)" OldValuesParameterFormatString="original_{0}" ProviderName="<%$ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand="SELECT * FROM [DUSER] ORDER BY [userid] ASC" UpdateCommand="UPDATE [DUSER] SET [username] = ?,[userpass] = ? WHERE [userid] = ? AND (([username] = ?) OR ([username] IS NULL AND ? IS NULL)) AND (([userpass] = ?) OR ([userpass] IS NULL AND ? IS NULL))"> <DeleteParameters> <asp:Parameter Name="original_userid" Type="Int16" /> <asp:Parameter Name="original_username" Type="String" /> <asp:Parameter Name="original_username" Type="String" /> <asp:Parameter Name="original_userpass" Type="String" /> <asp:Parameter Name="original_userpass" Type="String" /> </DeleteParameters> <InsertParameters> <%--This is removed since [userid] is an automatically generated index.--%> <%--<asp:Parameter Name="userid" Type="Int16" />--%> <asp:Parameter Name="username" Type="String" /> <asp:Parameter Name="userpass" Type="String" /> </InsertParameters> <UpdateParameters> <asp:Parameter Name="username" Type="String" /> <asp:Parameter Name="userpass" Type="String" /> <asp:Parameter Name="original_userid" Type="Int16" /> <asp:Parameter Name="original_username" Type="String" /> <asp:Parameter Name="original_username" Type="String" /> <asp:Parameter Name="original_userpass" Type="String" /> <asp:Parameter Name="original_userpass" Type="String" /> </UpdateParameters> </asp:sqlDataSource> <asp:ListView ID="ListView1" runat="server" DataKeyNames="userid" DataSourceID="ManageUseRSSource" InsertItemPosition="LastItem"> <AlternatingItemTemplate> <tr> <td> <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /> <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /> </td> <td> <asp:Label ID="useridLabel" runat="server" Text='<%# Eval("userid") %>' /> </td> <td> <asp:Label ID="usernameLabel" runat="server" Text='<%# Eval("username") %>' /> </td> <td> <asp:Label ID="userpassLabel" runat="server" Text='<%# Eval("userpass") %>' /> </td> </tr> </AlternatingItemTemplate> <EditItemTemplate> <tr> <td> <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" /> <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" /> </td> <td> <asp:Label ID="useridLabel1" runat="server" Text='<%# Eval("userid") %>' /> </td> <td> <asp:TextBox ID="usernameTextBox" runat="server" Text='<%# Bind("username") %>' /> </td> <td> <asp:TextBox ID="userpasstextBox" runat="server" Text='<%# Bind("userpass") %>' /> </td> </tr> </EditItemTemplate> <EmptyDataTemplate> <table runat="server"> <tr> <td> No data was returned.</td> </tr> </table> </EmptyDataTemplate> <InsertItemTemplate> <tr> <td> <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" /> <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" /> </td> <td> </td> <td> <asp:TextBox ID="usernameTextBox" runat="server" Text='<%# Bind("username") %>' /> </td> <td> <asp:TextBox ID="userpasstextBox" runat="server" Text='<%# Bind("userpass") %>' /> </td> </tr> </InsertItemTemplate> <ItemTemplate> <tr> <td> <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /> <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /> </td> <td> <asp:Label ID="useridLabel" runat="server" Text='<%# Eval("userid") %>' /> </td> <td> <asp:Label ID="usernameLabel" runat="server" Text='<%# Eval("username") %>' /> </td> <td> <asp:Label ID="userpassLabel" runat="server" Text='<%# Eval("userpass") %>' /> </td> </tr> </ItemTemplate> <LayoutTemplate> <table runat="server"> <tr runat="server"> <td runat="server"> <table ID="itemPlaceholderContainer" runat="server" border="1"> <tr runat="server"> <th runat="server"> </th> <th runat="server"> userid</th> <th runat="server"> username</th> <th runat="server"> userpass</th> </tr> <tr ID="itemPlaceholder" runat="server"> </tr> </table> </td> </tr> <tr runat="server"> <td runat="server"> <asp:DataPager ID="DataPager1" runat="server"> <Fields> <asp:NextPrevIoUsPagerField ButtonType="Button" ShowFirstPageButton="True" ShowLastPageButton="True" /> </Fields> </asp:DataPager> </td> </tr> </table> </LayoutTemplate> <SelectedItemTemplate> <tr> <td> <asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Delete" /> <asp:Button ID="EditButton" runat="server" CommandName="Edit" Text="Edit" /> </td> <td> <asp:Label ID="useridLabel" runat="server" Text='<%# Eval("userid") %>' /> </td> <td> <asp:Label ID="usernameLabel" runat="server" Text='<%# Eval("username") %>' /> </td> <td> <asp:Label ID="userpassLabel" runat="server" Text='<%# Eval("userpass") %>' /> </td> </tr> </SelectedItemTemplate> </asp:ListView>
解决方法
这是一个使用自动生成的标记而没有完全理解它的情况(我仍然没有,真的.)
.net – SqlDataSource与ObjectDataSource
要更清楚:
什么时候应该使用sqlDataSource或ObjectDataSource?
一个人如何激励选择?
解决方法
然而,当应用程序长期设计和构建时,并且预期(要求,客户愿望,最终数据库模式)可能会改变,那么引入适当的“业务”层可能会更有意义 – 将业务对象建模为对象,然后提供从基础数据库到这些业务对象的映射.
俗话说 – 你可以通过一层间接(或抽象)来解决计算机科学中的任何事情 – 这同样适用.
确定:您可以直接访问数据库,并且确定首先和第一次迭代可能(或可能)最快的方式.但是从长远来看,当应用程序建成后,通常是一个快速而又脏的方式 – 维护成本,维护成本,根据您和您的客户需求进行更改所需的成本和工作将会增长而且很快,在努力的过程中,这种快速的解决方案看起来并不好看.
所以总结一下我的观点:是的,最初使用直接的sql数据源可能会更快更容易 – 所以使用它就是重要的一点:为快速演示,一个概念验证样式的应用程序完成任务.但从长远来看,当您看一下应用程序的使用寿命时,通常值得投入更多(设计和编码)的努力来添加这一层抽象,以便您的网页不直接依赖于下面的数据库.
渣子
ASP.NET 2.0:如何将asp:Menu绑定到SqlDataSource?
.NET Framework提供了多个数据源:
> HierarchicalDataSourceControl
>
> XmlDataSource
>
> SiteMapDataSource
> DataSourceControl
>
> SqlDataSource
>
> AccessDataSource
>
> LinqDataSource
我想使用一个表示sql Server表中的数据.数据以每个人使用的标准hierarchical格式存储:
NodeID ParentNodeID Caption Url ======== ============== ========= ================= {3234... {3632... stackoverflow http://stackov... {3632... (null) Questions ~/questions.aspx {3233... (null) Tags ~/tags.aspx {3235... {3632... google http://www.goo...
返回所有行的查询将是:
SELECT * FROM Nodes
微软打算用什么方法将这些数据混合到asp:Menu中?
更新:aspalliance.com上有一篇很好的文章:Building a Database Driven Hierarchical Menu using ASP.NET 2.0.不幸的是,它描述了如何执行XML数据绑定;而我对数据库绑定感兴趣.
解决方法
ASP.NET – DataSourceID和DataSource有什么区别?
当我在设计时尝试设置DataSource属性时,通过在aspx页面上输入,我收到一个异常,表示“DataSource”属性不能声明地设置.但是当我使用属性窗口来更改DataSource时,它不会有异常.
解决方法
DataSourceID是.NET提供的数据源控件的字符串标识符,并且此属性存在,以便数据绑定控件和相应的数据源可以在设计时与标记相关联.在内部,控件将使用所提供的id来查找实际的数据源控件.
asp.net – ObjectDataSource删除问题
我在自定义对象上遇到Delete方法和ObjectDataSource问题. Select,Insert和Update方法工作正常.
这是类的代码:
public class Car { public string ID {get; set;}//I kNow this is 3.0+ Syntax. public string Description {get; set;}//I kNow this is 3.0+ Syntax. public bool Equals(Car other) { if (ReferenceEquals(null,other)) return false; if (ReferenceEquals(this,other)) return true; return other.ID == ID; } public override bool Equals(object obj) { if (ReferenceEquals(null,obj)) return false; if (ReferenceEquals(this,obj)) return true; return obj.GetType() == typeof (Car) && Equals((Car) obj); } public override int GetHashCode() { return ID; } } public class CarList { private static List<Car> _cars; public CarList() { if(_cars == null) _cars = new List<Car>(); //Create some cars and insert them here... } public List<Car> Select() { return _cars; } public void Update(Car updatedCar) { int i = _cars.IndexOf(updatedCar); if(i != -1) { _cars[i] = updatedCar; } } public void Insert(Car insertedCar) { _cars.Add(insertedCar); } public void Delete(Car deletedCar) { _cars.Remove(deletedCar); } }
这是ObjectDataSource和DetailsView的代码:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="Car" TypeName="CarList" DeleteMethod="Delete" InsertMethod="Update" SelectMethod="Select" UpdateMethod="Update"> </asp:ObjectDataSource> <asp:DetailsView ID="DetailsView1" runat="server" AllowPaging="True" AutoGenerateRows="False" CellPadding="4" DataSourceID="ObjectDataSource1" ForeColor="#333333" GridLines="None" Height="50px" Width="125px"> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <CommandRowStyle BackColor="#D1DDF1" Font-Bold="True" /> <RowStyle BackColor="#EFF3FB" /> <FieldHeaderStyle BackColor="#DEE8F5" Font-Bold="True" /> <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> <Fields> <asp:BoundField datafield="Id" HeaderText="Id" /> <asp:BoundField datafield="Description" HeaderText="Model" /> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" ShowInsertButton="True" /> </Fields> <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#2461BF" /> <AlternatingRowStyle BackColor="White" /> </asp:DetailsView>
当我尝试删除一个Item并对方法Delete执行调试时,它的参数为deletedCar,如下所示:
ID = 0
说明= NULL
但是,当我对Update或Insert Methods执行调试时,Car对象正确填充了正确的数据.
到底是怎么回事?
解决方法
<asp:DetailsView DataKeyNames="ID" />
我们今天的关于使用SqlDataSource删除空字典错误 – ASP.net ListView的分享已经告一段落,感谢您的关注,如果您想了解更多关于.net – SqlDataSource与ObjectDataSource、ASP.NET 2.0:如何将asp:Menu绑定到SqlDataSource?、ASP.NET – DataSourceID和DataSource有什么区别?、asp.net – ObjectDataSource删除问题的相关信息,请在本站查询。
本文标签: