私が取り組んでいるプロジェクトでは、ユーザーが複数の項目を選択できるように、フォームにチェックボックスをオンにする必要があります。これらをboolとして個々の列に配置することもできますが、チェックボックスの値が変更されるか、追加する必要がある場合があります。そこで、これらのチェックボックスの名前を保持するテーブルを作成し、それらをリストしました。私の質問は; これらの値を顧客と一致する別のテーブルに取得するにはどうすればよいですか。これはどのように適切に処理する必要がありますか?
ビューには会社名とレコードIDがあります/AuditSchedule/details/208列に複数の値を入れるのは良い習慣ではないことを読みましたが、他にどのような選択肢がありますか?
どうもありがとう!
顧客のテーブルにあるのは、ProductTypeのフィールドです。これは何にもリンクされていません。チェックボックスとしてリストしたい製品タイプの別の表があります。私はこれら2つのテーブルの間に何の関係もありません。私にはあるべきではないように思えますが、私を訂正して、あるはずであるかどうか私に知らせてください。したがって、チェックボックスが選択されている場合、その値(ProductName)を顧客テーブルのProductTypeフィールドのコンマで区切って配置する必要があります。
顧客またはスケジュールの表は次のとおりです。
public class AuditSchedule
{
public virtual int AuditScheduleID { get; set; }
public virtual Nullable<DateTime> audit_completed_date { get; set; }
public virtual string gl_cmp_key { get; set; }
public virtual string audit_year { get; set; }
public virtual string ar_ship_key { get; set; }
public virtual string ar_ship_name { get; set; }
public virtual string im_adres_city { get; set; }
public virtual string im_adres_state { get; set; }
public virtual string audit_type { get; set; }
public virtual string audit_no { get; set; }
public virtual string audit_group { get; set; }
public virtual string Footage { get; set; }
public virtual string Rolling3MosFootage { get; set; }
public virtual string snp_SalesRep8 { get; set; }
public virtual string epg_sales_rep_accountable { get; set; }
public virtual string tech_service_rep { get; set; }
public virtual string audit_done_by { get; set; }
public virtual Nullable<DateTime> audit_recieved_date { get; set; }
public virtual string audit_notes { get; set; }
public virtual string audit_pdf { get; set; }
public virtual string updated { get; set; }
public virtual string hidden { get; set; }
public virtual string en_stats_key { get; set; }
public virtual string Control_ID { get; set; }
public virtual Nullable<DateTime> audit_date { get; set; }
public virtual string contacts_present { get; set; }
public virtual string audit_furnished_to { get; set; }
public virtual string spacer_type { get; set; }
}
製品表は次のとおりです。
public class SpacerProduct
{
public int SpacerProductID { get; set; }
public string SpacerBrand { get; set; }
public string SpacerName { get; set; }
}
お役に立てれば
ビューは、AuditSchedulesのフォームタイプの編集であり、入力される場所はわずかです。その部分は機能します。ビューにチェックボックスを追加すると、迷子になります。チェックボックスのToListを設定する部分ビューを作成し、それをフォームに追加しました。表の結果を取得する方法がわかりません。
Tohidへの質問:いくつか質問があります。まず、ViewModelは、Modelsディレクトリ用の名前空間であり、私のモデルはモデルであると想定しています。_db.getAuditScheduleByIdは、別の方法を実行する必要がある可能性があると説明したエンティティに含まれていません。私の場合は_db.AuditSchedulesになりますが、ドロップダウンに表示されますが、気に入らないため、更新するように変更しました。2012年7月2日viewModel.AuditScheduleInstance = _db.AuditSchedules.Single(r => r.AuditScheduleID == id) ;
私はまだ問題を抱えています
_db.GetAvailableSpacerProducts()
私はそれを反映するものを私のエンティティに持っていません、そして私はそれを変更する方法がわかりません。おそらく私が他のもので変更したもののようなものですが、確かではありません。
2012年7月5日更新
QQAEntitiesは次のとおりです。
名前空間QQAForm.Models
{
public class QQAEntities : DbContext
{
public DbSet<AuditSchedule> AuditSchedules { get; set; }
public DbSet<Category> Categories { get; set; }
public DbSet<SubCategory> SubCategories { get; set; }
public DbSet<MainQuestion> MainQuestions { get; set; }
public DbSet<Suggestion> Suggestions { get; set; }
public DbSet<DocumentLink> DocumentLinks { get; set; }
public DbSet<Audit> Audits { get; set; }
public DbSet<AuditData> AuditDatas { get; set; }
public DbSet<SpacerProduct> SpacerProducts { get; set; }
public DbSet<ScoreCard> ScoreCards { get; set; }
}
}
また、私のソリューションにはQQAForm.Dataという別のプロジェクトがあります。これは、メンバーシップに関連するすべての役割とセキュリティのみを制御します。お役に立てれば。あなたの時間と忍耐に感謝します。
2012年7月6日更新
最終作業編集:
[HttpPost]
public ActionResult Edit(AuditScheduleEdit viewModel)
{
if (ModelState.IsValid)
{
viewModel.PopulateCheckBoxsToSpacerType();
_db.Entry(viewModel.AuditScheduleInstance).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
else
{
return View(viewModel);
}
}
2012年8月2日更新
私はこれをこのプロジェクトの他の分野で使用できると判断しました。チェックボックスを使用する場所が複数あります。
これを別のビューに実装しようとしましたが、機能しません。これが機能しない理由は、チェックボックスにデータを入力するために、現在のテーブルのIDを調べて、それを更新できるようにするためです。これはスニペットです:
//get
public ActionResult _Forms(int id)
{
AuditFormEdit viewModel = new AuditFormEdit();
viewModel.ScoreInstance = _db.MainAnswers.Single(r => r.MainAnswerID == id);
viewModel.InitializeScoreCheckBoxHelperList(_db.Scores.ToList());
return View(viewModel);
}
//post
[HttpPost]
public ActionResult _Forms(int id, AuditFormEdit viewModel)
{
if (ModelState.IsValid)
{
viewModel.PopulateCheckBoxsToScores();
_db.Entry(viewModel.ScoreInstance).State = System.Data.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("/");
}
else
{
return View(viewModel);
}
}
(r => r.MainAnswerID == id)が問題です。MainAnswerは、更新が必要なテーブルです。レコードには、AuditScheduleID、MainQuestionID、およびスコアのチェックボックスから入力されたテキストも挿入する必要があります。これをコメントアウトすると、何も表示されません。私が本当に必要としているのは、これを取得してデータを含む新しいレコードを挿入する方法です。これを行うためにコードを変更する方法がわかりません。