<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" 
        DataSourceID="ObjectDataSource1" Height="50px" Width="125px">
        
        <Fields>
            <asp:BoundField DataField="EditorComment" HeaderText="EditorComment" 
                SortExpression="EditorComment" HtmlEncode="false" />
            <asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
            <asp:BoundField DataField="Author" HeaderText="Author" 
                SortExpression="Author" />
            <asp:BoundField DataField="ISBN" HeaderText="ISBN" SortExpression="ISBN" />  
            <asp:BoundField DataField="ImageId" HeaderText="ImageId" 
                SortExpression="ImageId" HtmlEncode="false"/>      
            <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
            <asp:BoundField DataField="WordCount" HeaderText="WordCount" 
                SortExpression="WordCount" />            
            <asp:BoundField DataField="BookName" HeaderText="BookName" 
                SortExpression="BookName" />
            <asp:BoundField DataField="PublishDate" HeaderText="PublishDate" 
                SortExpression="PublishDate" />
            <asp:BoundField DataField="ContentDescription" HeaderText="ContentDescription" 
                SortExpression="ContentDescription" />   
            <asp:BoundField DataField="Clicks" HeaderText="Clicks" 
                SortExpression="Clicks" />
            <asp:BoundField DataField="AuthorDescription" HeaderText="AuthorDescription" 
                SortExpression="AuthorDescription" HtmlEncode="false" />        
        </Fields>
        <FooterStyle BackColor="#cccccc" />
        <EditRowStyle BackColor="#000099" Font-Bold="true" ForeColor="White" />
        <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
        <HeaderStyle BackColor="Black" Font-Bold="true" ForeColor="White" />
        <AlternatingRowStyle BackColor="#cccccc" />
        
    </asp:DetailsView>
    
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        SelectMethod="GetBookById" TypeName="BookBLL.BookManager">
        <SelectParameters>
            <asp:QueryStringParameter Name="Id" QueryStringField="Id" Type="Int32" />
        </SelectParameters>
    </asp:ObjectDataSource>
其中有测过了,Id可以传过来,但不能通过方法GetBookById(int Id)获取对象,
我在测试中是用int id = convert.ToInt32(Request.QueryString["id"]),获取Id在传入方法,但获取不到对象
但用实际数子GetBookById(4)是可以获取对象的,
各位高手帮帮忙,我实在是做不出来

解决方案 »

  1.   

    你测试
    int id = convert.ToInt32(Request.QueryString["id"])
    这个id获得了吗???
    如果能获得,则DetailsView中设置的
    <asp:QueryStringParameter Name="Id" QueryStringField="Id" Type="Int32" />
    也一定能够获得!!
      

  2.   

    要注意Id和id的大小写。另外,不论什么问题,至少你可以用最通用的办法来设计查询参数<SelectParameters>
        <asp:Parameter Name="Id" Type="Object" />
    </SelectParameters>protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        e.InputParameters["Id"] = int.Parse(this.Page.Request["id"]);
    }这样,你的代码就可以做任何中间处理和转换。
      

  3.   

    如果你在此发现任何问题,都可以这样,把参数重新设置为最通用的 Parameter ,类型声明为 Object,保持 Name 属性跟所调用方法的声明参数一定要大小写完全一样,然后在 Selecting 事件处理中手动设置属性值。有时候,这是必须的。例如我们希望在所调用的方法中传递一个 Page,就可以设置<asp:Parameter Name="pg" Type="Object" />
     e.InputParameters["pg"] = this.Page;等等。