私は自分のWebサイトで3層アーキテクチャを使用しています。グリッドビューで更新するのではなく、グリッドビューの行の値を他のページに送信し、そこに更新情報を追加したいと思います。 ビューページのリンクコードは次のとおりです。'Object'を暗黙的に 'System.Data.DataTable'に変換できません。
<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コード: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;
}
}
が言及したエラーの上に取得しています。ここでは、選択したカテゴリを更新ページに表示したいと思います。
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 />
誰もこれで私を助けることができますか?
'CategoryBL.GetCategoryByID(categoryId);'は何をしますか?戻り値は何にも割り当てられません。 'DbUtility.GetRecordsInDataTable'のコードは何ですか?投稿されたコードに基づいて、エラーは 'DbUtility.GetRecordsInDataTable'で発生しています。 – Tim
'CategoryBL.GetCategoryByID'に' Category'を返していますが、指定された戻り値の型は 'DataTable'です。署名を 'public static Category GetCategoryByID(int categoryID);に変更してみてください。 – Tim
@ティム、私は変わった。しかし、私はこれらの値を更新ページに表示できません。フィールドはnullです。私がデバッグすると、値が転送されているのがわかりました。 – Orion