【发布时间】:2014-03-08 16:35:40
【问题描述】:
每次调用更新函数时都会遇到问题, 我相信问题的根源是因为这个函数获取了对象参数, 并且还从不同的源中获取一个参数,我没有正确地这样做。
这是错误: http://prntscr.com/2z0cd6
GridView 代码:
<asp:GridView ID="gvAnimals" runat="server" AutoGenerateColumns="False" CellPadding="4" DataSourceID="ObjectDataSourceAnimals" ForeColor="#333333" GridLines="None" DataKeyNames="animalId">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
<asp:BoundField DataField="animalId" HeaderText="animalId" SortExpression="animalId" />
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
<asp:CheckBoxField DataField="vertebrates" HeaderText="vertebrates" SortExpression="vertebrates" />
<asp:CheckBoxField DataField="vegetarian" HeaderText="vegetarian" SortExpression="vegetarian" />
<asp:CheckBoxField DataField="terrestrial" HeaderText="terrestrial" SortExpression="terrestrial" />
<asp:BoundField DataField="kind" HeaderText="kind" SortExpression="kind" />
<asp:BoundField DataField="avgWeight" HeaderText="avgWeight" SortExpression="avgWeight" />
<asp:BoundField DataField="avgHeight" HeaderText="avgHeight" SortExpression="avgHeight" />
<asp:BoundField DataField="infoAdress" HeaderText="infoAdress" SortExpression="infoAdress" />
<asp:BoundField DataField="imageAdress" HeaderText="imageAdress" SortExpression="imageAdress" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSourceAnimals" runat="server" DeleteMethod="DeleteAnimal" OldValuesParameterFormatString="original_{0}" SelectMethod="GetAllAnimals" TypeName="BLProject.Animal" UpdateMethod="UpdateAnimal" DataObjectTypeName="BLProject.Animal">
<DeleteParameters>
<asp:Parameter Name="a" Type="Object" />
<asp:SessionParameter Name="newsAdress" SessionField="Adress" Type="String" />
</DeleteParameters>
<SelectParameters>
<asp:ControlParameter ControlID="textSearch" Name="Search" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="dropdownlistAnimalToSearch" Name="type" PropertyName="SelectedValue" Type="String" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="a" Type="Object" />
<asp:SessionParameter DefaultValue="D:\\project\\Ilan Project 29-11\\Web\\NewsInfo" Name="newsAdress" SessionField="Adress" Type="String" />
</UpdateParameters>
</asp:ObjectDataSource>
*我相信错误的来源是粗体
更新功能:
[DataObjectMethod(DataObjectMethodType.Update)]
public static int UpdateAnimal(Animal a, string newsAdress)
Animal a是grid view通过select函数得到的object参数, 但是地址是来自会话源的另一个参数,该函数也可以获取。 但是,由于我添加了此参数,因此出现了这个新错误。
谢谢。
【问题讨论】:
-
是的,我知道,由于我在函数中添加了新参数,gridview 还要求我手动添加对象参数。但是,我不知道该怎么做,所以我相信这是我的问题的根源:“
" -
你能检查一下如果你把它添加到你的对象数据源 DataObjectTypeName="Animal" 吗?
-
我想我有这个:prntscr.com/2z0tv2 *edit:我添加了这个:prntscr.com/2z0ufi
-
谢谢,但现在我有一个新错误:prntscr.com/2z0uyf
-
TypeName 不是您的类名,您可以在此处进行方法更新,例如 stackoverflow.com/a/19199243/1664356 和来自 msdn msdn.microsoft.com/en-us/library/…?
标签: c# asp.net gridview objectdatasource aspxgridview