المتتالية دروبدونليست مع مفك 5 ، أجاكس ، سي# و مسكل سيرفر
-
20-12-2019 - |
سؤال
أنا جديد تماما ل مفك القادمة من أشكال ويندوز و 3 الطبقة العمارة.
أحاول معرفة استخدام دروبدونليستس المتتالية (دل) بالسكان من قاعدة البيانات.إم باستخدام مس سكل سيرفر 2012 ، فس 2013
حاليا أنا أعمل على استبيان المستخدم الذي يمكن للمستخدمين الاختيار من إجابات متعددة من دل.تعتمد على بعض التحديدات أحتاج إلى تغيير الإجابات (مرة أخرى دل) على السؤال التالي.
قاعدة البيانات:
الجدول DDLStacks
:
StackId | StackName
1 | Berry
2 | BerryColor
3 ....
الجدول DDLStackContents
(سسيد كومة معرف المحتوى ، والغرض الفهرسة)
SCId | StackId | GroupId | Key | Value
--------------------------------------
1 | 1 | Null | 1 | Grape
2 | 1 | Null | 2 | Avocado
3 | 1 | Null | 3 | Banana
4 | 2 | Null | 1 | Yellow
5 | 2 | Null | 2 | Green
6 | 2 | 1 | 3 | Red
7 | 2 | 1 | 4 | Orange
8...
الإجراء:
CREATE PROCEDURE [dbo].[spDLLSelect]
@p_StackName_in VARCHAR(20),
@p_GroupId_in Int = null
AS
BEGIN
SELECT [Key],Value FROM DDLStackContents
WHERE StackID IN (SELECT StackId FROM DDLStacks WHERE StackName = @p_StackName_in)
AND (GroupId = @p_GroupId_in OR @p_GroupId_in IS null)
Order By [Key]
END
كما ترى DDLStacks
عقد الأسئلة, DDLStackContents
يحمل الإجابات المحتملة لهذا السؤال.
إذا كانت هناك مجموعة ، فيمكننا تحديد الإجابات فقط من تلك المجموعة وإلا فإن جميع الإجابات لمكدس معين.
الآن ثم قمت بإنشاء ADO.NET نموذج بيانات الكيان للوصول إلى سبدلسليكت.
الآن نموذج الفاكهة الخاص بي هو هذا
public class FruitModel
{
public IEnumerable<SelectListItem> BerryList { get; set; }
public IEnumerable<SelectListItem> BerryColorList { get; set; }
[Display(Name = "Berry")]
public byte? Berry { get; set; }
[Display(Name = "BerryColor")]
public byte? BerryColor { get; set; }
}
وحدة تحكم بلدي هو هذا ، ولست بحاجة لتحديد اللون تعتمد على نوع من التوت.قل ما إذا كان أفاكادو حدد الكل, إذا كان الموز مجرد مجموعة 1.
public class HomeController : Controller
{
public ActionResult Index()
{
CherryEntities db = new CherryEntities();
var model = new FruitModel();
model.BerryList = new SelectList(db.spDLLSelect("Berry", null), "Key", "Value");
//model.BerryColorList = new SelectList(db.spDLLSelect("BerryColor", null), "Key", "Value");
//model.BerryColorList = new SelectList(db.spDLLSelect("BerryColor", 1), "Key", "Value");
return View(model);
}
}
هنا وجهة نظري:
@using (Html.BeginForm("Register2", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
<div class="form-group">
@Html.LabelFor(m => m.Berry, new { @class = "col-md-2 control-label" })
<div class="col-md-10" >
@Html.DropDownListFor(m => m.Berry, Model.BerryList, "Please Select")
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.BerryColor, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.BerryColor, Model.BerryColorList, "Please Select")
</div>
</div>
}
هذا هو بلدي الترميز الأساسي ، لقد حاولت أساليب مختلفة لجعل هذا العمل ، أود أن أرى الطريقة الصحيحة للقيام بذلك مع أجاكس رمز كتبته بقوة.
قد تستخدم وجهات النظر الجزئية?أي أفكار?
المحلول
كنت قد حصلت بالفعل على النموذج الذي يتم كتابة وجهة نظرك بقوة مع.كل ما عليك فعله هو إضافة حدث تغيير في القائمة المنسدلة (لمزيد من المعلومات ، انظر الرابط المشار إليه أدناه).في حدث التغيير ، يمكنك تحميل القيم حسب القيمة المحددة على سبيل المثال.إذا تم تحديد التوت ، فستحتاج إلى جلب القيم المقابلة للتوت ، أي العنب والأفوكادو.
يمكنك تحميل القيم باستخدام جافا سكريبت وهو أمر مفيد عندما يكون لديك مجموعة كبيرة من البيانات.أو يمكنك التحميل المسبق للعرض مع جميع البيانات وفي هذه الحالة ، تحتاج فقط إلى تصفية الإجابات بناء على السؤال المحدد في واجهة المستخدم.
للحصول على مساعدة حول كيفية تحقيق ذلك في الممارسة العملية ، يرجى الرجوع المتتالية دروبدوونليست في مفك 4.يمكنك العثور على مثال مماثل بناء على احتياجاتك.