PDA

View Full Version : سوال: مشکل در ساخت server control



grobech
چهارشنبه 10 فروردین 1390, 00:01 صبح
سلام
من یه server control سعی کردم بنویسم پیغام خطا نمیده ولی وقتی روی دکمه کلیک میکنم هیچ کاری نمیکنه
متشکر میشم بگید مشکلش کجاست

namespace ServerControl1
{
[DefaultProperty("Text")]
[DefaultEvent("Click")]
[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
public class ServerControl1 : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]

Button btnmath = new Button();
TextBox txtnumber1 = new TextBox();
TextBox txtnumber2 = new TextBox();
Label result = new Label();
Literal codehtml = new Literal();
public string text1
{
get
{
return txtnumber1.Text;
}
set
{
txtnumber1.Text = value;
}
}
public string text2
{
get
{
return txtnumber2.Text;
}
set
{
txtnumber2.Text = value;
}
}
public void zarb()
{
Int32 a1 = Convert.ToInt32(text1);
Int32 a2 = Convert.ToInt32(text2);
Int32 a3 = a1 * a2;
result.Text = a3.ToString();
}
protected override void CreateChildControls()
{
codehtml.Text = "<br />";
Controls.Add(result);
Controls.Add(codehtml);
Controls.Add(txtnumber1);
Controls.Add(codehtml);
Controls.Add(txtnumber2);
Controls.Add(codehtml);
btnmath.Click += new EventHandler(btnmath_Click);
btnmath.Text = "zarb";
Controls.Add(btnmath);
}
void btnmath_Click(object sender, EventArgs e)
{
HttpContext.Current.Session.Add("d3", "add session by commponet");
zarb();
}
}
}

grobech
جمعه 12 فروردین 1390, 08:58 صبح
لطفا اگر کسی در این ضمینه فعالیت کرده منو راهنمایی کنه
اگر کسی سایتی یا کتابی یا مقاله ای داره ما رو در جریان بزاره اخه توی این ضمینه خیلی مک فعالیتی انجام گرفته
متشکرم

Himalaya
جمعه 12 فروردین 1390, 15:57 عصر
سلام


using System;
using System.Web.UI;
using System.Web.UI.WebControls;

[assembly: TagPrefix("MyControl.Multiply", "MyTelerik")]
namespace MyControl.Multiply
{
[ToolboxData("<{0}:MultiplyControl runat=server ></{0}:MultiplyControl>")]
[ParseChildren(true)]
public class MultiplyControl : Control
{
private Button MyButton;
private TextBox TextBoxDigit1;
private TextBox TextBoxDigit2;

public string Digit1
{
get
{
EnsureChildControls();
return TextBoxDigit1.Text;
}
set
{
EnsureChildControls();
TextBoxDigit1.Text = value;
}
}

public string Digit2
{
get
{
EnsureChildControls();
return TextBoxDigit2.Text;
}
set
{
EnsureChildControls();
TextBoxDigit2.Text = value;
}
}

private void Multiply()
{
string beginDiv = "<div style=\"width:100%; height:150px; padding-top:70px;margin-top:20px;font-size:3.5em;background-color:yellow;\" align=\"center\">Result is: ";
string endDiv = "</div>";
LiteralControl CreateResultControl = new LiteralControl(beginDiv);

try
{
CreateResultControl.Text += (double.Parse(TextBoxDigit1.Text) * double.Parse(TextBoxDigit2.Text)).ToString();
}
catch (FormatException ex)
{
CreateResultControl.Text += ex.Message;
}
catch (Exception ex)
{
CreateResultControl.Text += ex.Message;
}
finally
{
CreateResultControl.Text += endDiv;
this.Controls.Add(CreateResultControl);
}
}

protected override void CreateChildControls()
{
Controls.Add(new LiteralControl("<h3>Enter a number : "));
TextBoxDigit1 = new TextBox();
this.Controls.Add(TextBoxDigit1);
Controls.Add(new LiteralControl("</h3>"));

Controls.Add(new LiteralControl("<h3>Enter a number : "));
TextBoxDigit2 = new TextBox();
this.Controls.Add(TextBoxDigit2);
Controls.Add(new LiteralControl("</h3>"));

MyButton = new Button();
MyButton.Text = "Multiply";

MyButton.Click += (a, b) =>
{
Multiply();
};

this.Controls.Add(MyButton);
base.CreateChildControls();
}
}
}



واسه استفاده هم وقتی تو صفحه قرارش میدی، به صورت پیش فرض پراپرتی های Digit1 و Digit2 رو با 2 تا عدد ست کن. مثلا اینطوری


<MyTelerik:MultiplyControl ID="MultiplyControl1" runat="server" Digit1="2.7" Digit2="4.9" />

saman6488
یک شنبه 14 فروردین 1390, 23:57 عصر
جناب این چیزی که شما میگید استاتیک هست،برا داینامیک بودن ان باید چی کنیم؟منم هر چی با کد جناب grobech (http://barnamenevis.org/member.php?136593-grobech) ور رفتم نشد،کسی هست کمک کنه؟

Himalaya
دوشنبه 15 فروردین 1390, 15:57 عصر
سلام


منم هر چی با کد جناب grobech (http://barnamenevis.org/member.php?136593-grobech) ور رفتم نشد،کسی هست کمک کنه؟

کدی پست 3 رو واسه رفع ایراد کدای پست 1 گذاشتم دیگه. (شما اونی که کار میکنه رو ول کردی رفتی سراغ اونی که ایراد داره !!)


جناب این چیزی که شما میگید استاتیک هست،برا داینامیک بودن ان باید چی کنیم؟

منظورتون از استاتیک و داینامیک تو این مورد چیه؟ قراره این کامپوننت موقع رندر شدن 2 تا TextBox و یک Button ایجاد کنه و کاربر مقادیر رو تو اون تکست باکسها وارد کنه و با زدن دکمه حاصل ضرب اونها نمایش داده بشه.(ورودی ها از تکست باکس گرفته میشن. من نمیدونم منظورت از داینامیک تو اینجا چیه)

saman6488
سه شنبه 16 فروردین 1390, 07:50 صبح
ممنون از توجهت،اقا اولا این متد EnsureChildControls در بالا چی هست؟کجا تعریف شده؟ ثانیا من چون کد شما رو تست نکردم،فکر کردم زمانی که در ابتدا به دو پراپرتی مقدار دادید جمع این دو مقدار رو نشون میده که ظاهرا من اشتباه فکر کردم و منظورم از استاتیک بودن این بود،بعد یه سوال دیگه،چرا باید در ابتدا مقدار اولیه داشته باشه؟

grobech
سه شنبه 16 فروردین 1390, 09:53 صبح
تشکر میکنم بخاطر کدتون
ولی من که اجرا میکنم باز خروجی ندارم حتی وقتی حرف نیز وارد میکنم پیغام خطا هم نمیده
این خط رو کمی توضیح میدید لطفا
MyButton.Click += (a, b) =>
{
Multiply();
};