【问题标题】:gridview delete and select not working (with datakeynames)gridview 删除并选择不起作用(使用 datakeynames)
【发布时间】:2015-08-12 17:36:27
【问题描述】:

所以我有一个填充了来自 objectdatasource 的数据的 gridview。在那个对象数据源中,我还指定了我的删除和选择方法。但是,由于某种原因,删除和选择不起作用(或者我收到错误 必须在 GridView 'GridView1' 上指定数据键,然后才能检索所选数据键。使用 DataKeyNames 属性指定数据键。 ,或者它什么都不做)。这意味着 datakeyname 未设置或错误,但已设置(据我所知,它是正确的)?

我正在使用 BO 和 DAL 类。

博:

    public int OrderID
    {
        get { return _ID; }
        set { _ID = value; }
    }

DAL(删除),如果我得到删除,我会尝试自己再次找出选择。

[DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
    public static int DeleteOrder(Int32 OrderID)
    {
        SqlConnection conn = new SqlConnection(GetConnectionString());

        string sql =
          "DELETE FROM tblOrders WHERE ID=@OrderID";

        SqlCommand cmd = new SqlCommand(sql, conn);
        cmd.Parameters.AddWithValue("@OrderID", OrderID);

        conn.Open();
        int i = cmd.ExecuteNonQuery();
        conn.Close();

        return i;
    }

aspx(网格视图):

<asp:GridView ID="GridView1" runat="server" DataKeyNames="OrderID" DataSourceID="dtsrcOrder" AutoGenerateColumns="False" AllowPaging="True"
      EnableViewState="False" CssClass="gv" GridLines="None" Height="63px" Width="527px" CellPadding="4" ForeColor="#333333">
          <Columns>
              <asp:BoundField DataField="OrderID" HeaderText="ID" SortExpression="OrderID"></asp:BoundField>
              <asp:BoundField DataField="OrderNAME" HeaderText="Naam" SortExpression="OrderNAME"></asp:BoundField>
              <asp:BoundField DataField="OrderBOOK_ID" HeaderText="Boek" SortExpression="OrderBOOK_ID"></asp:BoundField>
              <asp:BoundField DataField="OrderCOUNT" HeaderText="Aantal" SortExpression="OrderCOUNT"></asp:BoundField>
              <asp:CheckBoxField DataField="OrderPAID" HeaderText="Betaald" SortExpression="OrderPAID"></asp:CheckBoxField>

              <asp:CommandField ShowDeleteButton="True" ShowSelectButton="True"></asp:CommandField>
          </Columns>
      </asp:GridView>

aspx 对象数据源:

        <asp:ObjectDataSource ID="dtsrcOrder" runat="server" DeleteMethod="DeleteOrder" SelectMethod="GetOrdersbyID" TypeName="DAL.OrdersDAL"
        DataObjectTypeName="BO.Order">
        <DeleteParameters>
            <asp:Parameter Name="OrderID" Type="Int32"></asp:Parameter>
        </DeleteParameters>
        <SelectParameters>
            <asp:ControlParameter ControlID="GridView1" PropertyName="SelectedValue" Name="OrderID" Type="Int32"></asp:ControlParameter>
        </SelectParameters>
    </asp:ObjectDataSource>

有人能看出我的错误吗?

【问题讨论】:

    标签: c# asp.net gridview


    【解决方案1】:

    您的语句包含语法错误:

    string sql = "DELETE FROM tblOrders WHERE ID=@OrderID";
    

    试试:

    sql = "DELETE tblOrders WHERE ID=@OrderID";
    

    另外,您可以尝试使用SQL DataSource 而不是Object DataSource 来简化您的解决方案。希望这可能会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 2016-01-06
      • 2012-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多