【问题标题】:objectDataSource binding with ASP.NET gridview auto adding parameters与 ASP.NET gridview 自动添加参数的 objectDataSource 绑定
【发布时间】:2011-01-17 13:21:03
【问题描述】:

我有一个gridview 数据绑定到一个objectdatasource。一切都很好,直到我将 2 列从 asp:BoundField 更改为 asp:TemplateField。这些是 UPC 列和零件列。我想为每个将用户带到另一个页面的字段显示一个链接按钮。现在 asp.net 期望这两个字段是更新存储过程的参数。为什么是这样?如何让它不假定这些列需要传递给存储过程?

这是网格视图的代码:

          <asp:GridView ID="GridView1" runat="server" SkinID="MSDefault" AutoGenerateColumns="False" DataSourceID="CartDataSource" PageSize="25"
              Width="100%" DataKeyNames="CartId" EmptyDataText="The cart is empty" OnRowDataBound="GridView1_RowDataBound" onrowcommand="GridView1_RowCommand">
              <Columns>
                  <asp:CommandField ShowDeleteButton="True" ShowEditButton="True">
                      <ItemStyle Width="8%" />
                  </asp:CommandField>
                  <asp:BoundField DataField="CartId" HeaderText="CartId" InsertVisible="False" ReadOnly="True"
                      SortExpression="CartId" Visible="False" />
                  <asp:TemplateField HeaderText="UPC" SortExpression="UPC">
                      <ItemTemplate>
                          <asp:LinkButton ID="LinkButton1" runat="server" CommandName="ShowInfo" CommandArgument='<%# Bind("UPC") %>' Text='<%# Bind("UPC") %>'></asp:LinkButton>
                      </ItemTemplate>
                      <ItemStyle Width="9%" />
                  </asp:TemplateField>
                  <asp:BoundField DataField="Mfr" HeaderText="Mfr" ReadOnly="True" SortExpression="Mfr">
                      <ItemStyle Width="11%" />
                  </asp:BoundField>
                  <asp:TemplateField HeaderText="Part" SortExpression="Part">
                      <ItemTemplate>
                          <asp:LinkButton ID="LinkButton2" runat="server" CommandName="ShowInfo" CommandArgument='<%# Bind("UPC") %>' Text='<%# Bind("Part") %>'></asp:LinkButton>
                      </ItemTemplate>
                      <ItemStyle Width="10%" />
                  </asp:TemplateField>
                  <asp:BoundField DataField="CustPart" HeaderText="Cust Part" ReadOnly="True" SortExpression="CustPart">
                      <ItemStyle Width="10%" />
                  </asp:BoundField>
                  <asp:BoundField DataField="PartDesc" HeaderText="Description" ReadOnly="True" SortExpression="PartDesc">
                      <ItemStyle Width="30%" Wrap="True" />
                  </asp:BoundField>
                  <asp:TemplateField HeaderText="Marked" SortExpression="Marked">
                      <EditItemTemplate>
                          <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Marked") %>' />
                      </EditItemTemplate>
                      <ItemTemplate>
                          <asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Marked") %>' Enabled="false" />
                      </ItemTemplate>
                      <ItemStyle Width="2%" />
                  </asp:TemplateField>
                  <asp:BoundField DataField="Quantity" DataFormatString="{0:d}" HeaderText="Quantity"
                      SortExpression="Quantity">
                      <ItemStyle HorizontalAlign="Right" Width="4%" />
                  </asp:BoundField>
                  <asp:TemplateField HeaderText="Price" SortExpression="Price">
                      <ItemStyle HorizontalAlign="Right" Width="8%" />
                      <ItemTemplate>
                          <asp:Label ID="lblPrice" runat="server"></asp:Label>
                          <asp:LinkButton ID="LnkBtnCallLocalBranch" runat="server" Visible="false" PostBackUrl="~/UserProfile/LocalDistributors.aspx">call local branch</asp:LinkButton>
                      </ItemTemplate>
                  </asp:TemplateField>
                  <asp:TemplateField HeaderText="Ext Price" SortExpression="ExtPrice">
                      <ItemStyle HorizontalAlign="Right" Width="8%" />
                      <ItemTemplate>
                          <asp:Label ID="lblExtPrice" runat="server"></asp:Label>
                      </ItemTemplate>
                  </asp:TemplateField>
              </Columns>
          </asp:GridView>

这里是objectData源代码

<asp:ObjectDataSource ID="CartDataSource" runat="server" OldValuesParameterFormatString="{0}" DeleteMethod="DeleteWithKey" SelectMethod="GetDataByCUserId"
    TypeName="PunchoutData.CartDataSetTableAdapters.CartTableAdapter" UpdateMethod="UpdateQuantityAndMarked" OnUpdated="CartDataSource_Updated" OnObjectCreated="CartDataSource_ObjectCreated">
    <DeleteParameters>
        <asp:Parameter Name="cartid" Type="Int32" />
    </DeleteParameters>
    <UpdateParameters>
        <asp:Parameter Name="marked" Type="Boolean" />
        <asp:Parameter Name="quantity" Type="Int32" />
        <asp:Parameter Name="cartid" Type="Int32" />
    </UpdateParameters>
    <SelectParameters>
        <asp:SessionParameter Name="cuserid" SessionField="CUserId" Type="Int32" />
    </SelectParameters>
</asp:ObjectDataSource>

这是正在生成的错误

ObjectDataSource 'CartDataSource' 找不到具有以下参数的非泛型方法 'UpdateQuantityAndMarked':Marked、Quantity、CartId、UPC、Part。

【问题讨论】:

    标签: asp.net data-binding objectdatasource


    【解决方案1】:

    问题是我使用的是 ,而我应该使用的是 。 Bind 是双向的,Eval 是单向的(只读)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-30
      • 2013-05-09
      • 2018-05-18
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多