ASP.NET2.0中对GridView删除操作时“未能找到带参数的非泛型方法”的解决方案

it2022-05-05  135

.NET GridView和ObjectDataSource使用时应该注意的一个地方 ObjectDataSource的使用的函数最好将变量名和数据库字段名统一,否则可能会出现错误 虽然有解决办法,但没必要浪费时间去玩那个,不就是变量名吗,无所谓的啦。 如果需要使用ObjectDataSource控件的更新和删除功能,一般是根据主键进行修改的,但是我在使用这个功能的时候, 由于把主键这个字段设置为了readonly(主键不能更新),结果传回去的时候主键值就没有了,后来想了个办法,用 cookieparam作为主键的来源,在gridview或者detailsview控件更新、删除之前(响应事件)将主键值写入cookie,感觉有 点笨,不过功能没什么问题,不知道大家是怎么做的。 编辑后记:       我发现自己真的很笨耶,晕死了。想要取回主键ID值,不用cookie那么麻烦去做,虽然可以实现功能,但肯定不好。 下面的方法应该才是正确的方法:    指定GridView或者DetailsView的 DataKeyNames 属性,比如你的主键ID是ID,则指定 DataKeyNames"ID"在objectdatasource或者其他数据源控件指定参数,如下:             <DeleteParameters>                 <asp:ControlParameter ControlID="DetailsView1" PropertyName="SelectedValue" Type="int32" Name="ID" />            </DeleteParameters>             <UpdateParameters>                 <asp:ControlParameter ControlID="DetailsView1" PropertyName="SelectedValue" Type="int32" Name="ID" />                // 其他参数              </UpdateParameters> 这样就可以传过去了 下面是我的一些代码: DetailsView :         <asp:DetailsView ID="DetailsView1" runat="server" DataKeyNames="ContentID" AutoGenerateRows="False" BackColor="White"             BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellPadding="3" CellSpacing="1"             DataSourceID="ObjectDataSource2" GridLines="None" Width="70%" RowStyle-HorizontalAlign="left">             <FooterStyle BackColor="#C6C3C6" ForeColor="Black" />             <EditRowStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />             <RowStyle BackColor="#DEDFDE" ForeColor="Black" />             <PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />             <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />             <Fields>                 <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />                 <asp:BoundField DataField="ContentID" HeaderText="ID" ReadOnly="True" />                 <asp:BoundField DataField="ContentName" HeaderText="名称" />                 <asp:BoundField DataField="ContentAuthor" HeaderText="作者" />                 <asp:TemplateField HeaderText="关键字">                     <EditItemTemplate>                         <asp:TextBox ID="TextBox1" Width="320px" TextMode="multiLine" Rows="5" runat="server" Text='<%# Bind("ContentKeyword") %>'></asp:TextBox>                     </EditItemTemplate>                     <InsertItemTemplate>                         <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("ContentKeyword") %>'></asp:TextBox>                     </InsertItemTemplate>                     <ItemTemplate>                         <asp:Label ID="Label1" runat="server" Text='<%# Bind("ContentKeyword") %>'></asp:Label>                     </ItemTemplate>                 </asp:TemplateField>                 <asp:BoundField DataField="SortOrder" HeaderText="排序" />                 <asp:CheckBoxField DataField="IsFree" HeaderText="是否免费" />                 <asp:CheckBoxField DataField="IsVisible" HeaderText="是否可见" />                 <asp:BoundField DataField="ClickHit" HeaderText="点击数" ReadOnly="True" />                 <asp:BoundField DataField="CreateTime" HeaderText="创建日期" ReadOnly="True" />             </Fields>         </asp:DetailsView>    ObjectDataSource :       <asp:ObjectDataSource ID="ObjectDataSource2" runat="server" DeleteMethod="deleteContent"             SelectMethod="getContentDetail" TypeName="ServiceContent" UpdateMethod="updateContent">             <DeleteParameters>                 <asp:ControlParameter ControlID="DetailsView1" PropertyName="SelectedValue" Type="int32" Name="ContentID" />             </DeleteParameters>             <UpdateParameters>                 <asp:ControlParameter ControlID="DetailsView1" PropertyName="SelectedValue" Type="int32" Name="ContentID" />                 <asp:Parameter Name="ContentName" Type="String" />                 <asp:Parameter Name="ContentAuthor" Type="String" />                 <asp:Parameter Name="ContentKeyword" Type="String" />                 <asp:Parameter Name="SortOrder" Type="Int32" />                 <asp:Parameter Name="IsFree" Type="Int32" />                 <asp:Parameter Name="IsVisible" Type="Int32" />             </UpdateParameters>             <SelectParameters>                 <asp:QueryStringParameter DefaultValue="0" Name="ContentID" QueryStringField="ContentID"                     Type="Int32" />             </SelectParameters>         </asp:ObjectDataSource> 业务层代码:     static public DataSet getContent(int CatalogID)     static public void updateContent(int ContentID, string ContentName, string ContentAuthor, string ContentKeyword, int SortOrder, int IsFree, int IsVisible)     static public void deleteContent(int ContentID)

转载于:https://www.cnblogs.com/Bandry/archive/2006/09/13/503030.html

相关资源:各显卡算力对照表!

最新回复(0)