无法隐式转换类型'对象'到' System.Data.DataTable'

时间:2016-08-31 06:03:52

标签: c# asp.net webforms

我在我的网站上使用3层架构。我不想在gridview中更新,而是将gridview行值发送到其他页面并在那里执行更新。 这是视图页面中的链接代码。

 <asp:TemplateField>  
             <ItemTemplate>
                <a href ='<%#"UpdateCategory.aspx?CategoryID="+DataBinder.Eval(Container.DataItem,"CategoryID") %>'> <%#Eval("CategoryName") %>  </a>
            </ItemTemplate> 
        </asp:TemplateField>

更新页面中的PageLoad事件:

protected void Page_Load(object sender, EventArgs e)
    {
        int categoryId = 0;
        categoryId = Convert.ToInt32(Request.QueryString["CategoryID"]);
        CategoryBL.GetCategoryByID(categoryId);
    }

CategoryBL代码:

public static DataTable GetCategoryByID(int categoryID)
    {
        Category category = new Category();

        string query = "SELECT * FROM [Categories] WHERE [CategoryID] = @CategoryID";
        SqlCommand cmd = new SqlCommand(query);
        cmd.Parameters.AddWithValue("@CategoryID", SqlDbType.Text).Value = categoryID;

        DataTable dt = DbUtility.GetRecordsInDataTable(cmd);
        if (dt.Rows.Count > 0)
        {
            category.CategoryID = Convert.ToInt32(dt.Rows[0]["CategoryID"]);
            category.CategoryName = dt.Rows[0]["CategoryName"].ToString();
            category.Description = dt.Rows[0]["Description"].ToString();

            return category;
//Cannot implicitly convert type 'Object' to 'System.Data.DataTable'
        }
        else
        {
            return null;
        }
    }

在CategoryBL页面中返回类别时出现上述错误。在这里,我想在更新页面中显示所选类别。

GetRecordsInDataTable代码:

public static DataTable GetRecordsInDataTable(SqlCommand cmd)
    {
        DataTable dt = new DataTable();

        SqlConnection con = new SqlConnection();
        con.ConnectionString = GetConStr();   

        SqlDataAdapter adapter = new SqlDataAdapter();
        adapter.SelectCommand = cmd;

        try
        {
            con.Open();
            adapter.SelectCommand.Connection = con;
            adapter.Fill(dt);

            return dt;
        }
        catch (Exception ex)
        {

             //Logger.Log(ex);
            throw ex;
        }


    }

更新页面:

        <asp:Label ID="Label1" runat="server" Text="Category Name"></asp:Label>
        <asp:TextBox ID="CategoryNameTextBox" runat="server"></asp:TextBox>
        <br />
        <br />

    <asp:Label ID="Label3" runat="server" Text="Description"></asp:Label>
        <asp:TextBox ID="DescriptionTextBox" runat="server"></asp:TextBox>
        <br />
        <br />

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您的函数等待返回DataTable对象,而不是返回Category对象。您必须选择一个或另一个来解决错误问题。将功能类型更改为“类别”或选择返回dt。

选择取决于您在Page_Load函数中的处理。现在你的代码什么都不做,它只是创建了对象,但却无处分配。你决定如何处理更新页面中的结果吗?