我在我的网站上使用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 />
任何人都可以帮我吗?
答案 0 :(得分:0)
您的函数等待返回DataTable对象,而不是返回Category对象。您必须选择一个或另一个来解决错误问题。将功能类型更改为“类别”或选择返回dt。
选择取决于您在Page_Load函数中的处理。现在你的代码什么都不做,它只是创建了对象,但却无处分配。你决定如何处理更新页面中的结果吗?