PDA

View Full Version : مبتدی: نحوه قرار دادن یوزر کنترل بصورت داینامیک بر روی صفحه



malloc
یک شنبه 18 آبان 1393, 00:09 صبح
سلام دوستان.

من میخوام یه یوزر کنترل بنویسم که توش از کاربر تاریخ رو بگیرم . حالا چطور میتونم این یوزر کنترل رو بصورت داینامیک توسط کد های سی شارپ توی قسمت دیزاین (html) پروژم اضافه کنم.

دقت کنید که میخوام در حین اجرای برنامه بسته به شرایط از یک تا 4 تا از اون یوزر کنترل به پروژه اضافه بشه.

حالا اگه روش دیگه ای به ذهنتون میرسه که بشه هم کاربر رو محدود به ورود تاریخ کرد و هم بشه بصورت داینامیک به پروژه اضافش کرد ممنون میشم راهنماییم کنید.

اگه سوال رو هم متوجه نشدید بگید تا بیشتر توضیح بدم

prgakbarzadeh
چهارشنبه 18 آذر 1394, 13:54 عصر
public static class LoadControlExtension
{
/// <summary>
/// Loads a user control with a constructor with a signature matching the supplied params
/// Control must implement a blank default constructor as well as the custom one or we will error
/// </summary>
/// <param name="templateControl">Template control base object</param>
/// <param name="controlPath">Path to the user control</param>
/// <param name="constructorParams">Parameters for the constructor</param>
/// <returns></returns>
public static UserControl LoadControl(this TemplateControl templateControl, string controlPath, params object[] constructorParams)
{
// Load the control
var control = templateControl.LoadControl(controlPath) as UserControl;


// Get the types for the passed parameters
Type[] paramTypes = new Type[constructorParams.Length];
for (int paramLoop = 0; paramLoop < constructorParams.Length; paramLoop++)
paramTypes[paramLoop] = constructorParams[paramLoop].GetType();

// Get the constructor that matches our signature
var constructor = control.GetType().BaseType.GetConstructor(paramTyp es);

// Call the constructor if we found it, otherwise throw
if (constructor == null)
{
throw new ArgumentException("Required constructor signature not found.");
}
else
{
constructor.Invoke(control, constructorParams);
}

return control;
}
}

malloc
چهارشنبه 18 آذر 1394, 15:44 عصر
نحوه استفادش چطوریه ؟

aminmousavi
چهارشنبه 18 آذر 1394, 17:57 عصر
سلام دوست عزیز . فرض کنید یک Element دارین توی صفحه که runat=server هست مثلا :

<div id="content" runat="server"></div>




Control ContactUs = LoadControl("CPanel/control/clever/Forms/ContactUs.ascx");
content.Controls.Add(ContactUs);

CPanel/control/clever/Forms/ContactUs.ascx آدرس کنترل هست که ذخیره شده .

malloc
شنبه 21 آذر 1394, 01:32 صبح
دستتون درد نکنه ...
اما نکته اینجاس که توی تابع دوستمون prgakbarzadeh (http://barnamenevis.org/member.php?112677-prgakbarzadeh) نمیدونم پارامترها رو چی ارسال کنم .... اگه یه نمونه ارسال پارامترها رو بگید ممنون میشم
public static UserControl LoadControl(this TemplateControl templateControl, string controlPath, params object[] constructorParams)